求最佳SQL查询语句(100分)

  • 主题发起人 主题发起人 xuege007
  • 开始时间 开始时间
X

xuege007

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手好,请帮忙:
有张表(SF_YJK_YE):
CYEAR CMONTH USERID YJKYE JKSTATUS
2006 11 003-0001 0.65 Y
2006 12 003-0001 0.95 Y
现在想操作此表,我想插如数据,在插入前,要把003-0001里的数据提取出来,比如今天是2007年01月01日,想用SQL语句来实现此操作:
2007 01 003-0001 0.95-0.34 N
如果2006 12 月不存在,那就提取前一个数据,请问SQL要怎么写,
起初我 是这样写:select yjkye from sf_yjk_ye where cyear=2006 and cmonth=12 and userid=003-0001
但是这样写,在跨年度的时候,很难实现,请帮忙解决
(其中 CYEAR,CMONTH ,USERID为主键)
 
select top 1 * from sf_yjk_ye where userid=003-0001
order by Cyear,cmonth desc
你看看,是不是这个意思!?
 
if exists(select 1 from sf_yjk_ye where userid=003-0001)
begin
select top 1 * from sf_yjk_ye where userid=003-0001
order by Cyear,cmonth desc
end
更安全点,这样写,
 
不是这个意思
意思这样的:
在2006年产生的数据,现在是2007年了,我想把2006年数据提取出来,比如现在是1月,如果2006年12月有数据,就提取12月,若没有就往前一个月提取数据
SELECT YJKYE FROM SF_YK_YE WHERE CYEAR='''+LS+''' AND CMONTH='''+LA+''' AND USERID='003-0001'
LS,LA 可变的变量
 
倒序排列,始终取最后一行
 
不是这个意思

意思这样的:
在2006年产生的数据,现在是2007年了,我想把2006年数据提取出来,比如现在是1月,如果2006年12月有数据,就提取12月,若没有就往前一个月提取数据
SELECT YJKYE FROM SF_YK_YE WHERE CYEAR='''+LS+''' AND CMONTH='''+LA+''' AND USERID='003-0001'
LS,LA 是服务器的时间,如服务器的时间:2007-01-03 那LS=2007 LA=01 数据表SF_YJK_YEL里并没有这个时间,如果这样写SELECT YJKYE FROM SF_YK_YE WHERE CYEAR='''+(LS-1)+''' AND CMONTH='''+(LA-1)+''' AND USERID='003-0001'
则不会到2006年12月或者11月等
要怎么才能解决这个问题,请高手来帮忙呀
 
来自:ghtmhy, 时间:2006-12-4 13:35:19, ID:3638593
倒序排列,始终取最后一行

要怎么实现???请写出代码,谢谢
 
select top 1 * from sf_yjk_ye where userid=003-0001
order by Cyear,cmonth desc
我这句话就是你说的意思啊,
倒序排列,
2006 12
2006 11
2006 10
......
这样排序,然后,用Top 1 取第一行的数据(2006 12),

ghtmhy明白我的意思了,
 
if exists(select 1 from sf_yjk_ye where userid=003-0001 and YJKYE<>0)
begin ----是不是这个意思,加个判断是否有值的条件再排序!
select top 1 * from sf_yjk_ye where userid=003-0001 and YJKYE<>0
order by Cyear,cmonth desc
end

声明:俺不是高手!
 
我试过了,当出现这样情况的时候:
2006 11 0.65
2007 01 0.75

用select top 1 * from sf_yjk_ye where userid=003-0001 and YJKYE<>0
order by Cyear,cmonth desc
的话,那提取到是2006 11 0.65 的数据,而我想要的是2007 01 0.75的数据
还是不妥当,请各位帮忙想办法好吗?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
948
SUNSTONE的Delphi笔记
S
I
回复
0
查看
860
import
I
后退
顶部