一个SQL语句,解决即可结帖
表字段   值(decimal)   时间(dateTime) 
 要求是   求出一个列   显示出与最近的上一个时间数据相比,值的状态.如涨   平   落 
 比如数据   19.20   2007-03-01   13:00:00 
 19.40   2007-03-01   14:00:00      
 求出是   平 
                      涨
------解决方案--------------------不太明白,说清楚一点撒 
------解决方案--------------------你所谓的最近是怎么算的
------解决方案--------------------select case when 值 > (select top 1 值 from 表 b where b.時間  <a.時間 order by 時間 desc) then  '漲 ' when 值 =(select top 1 值 from 表 b where b.時間  <a.時間 order by 時間 desc) then  '平 ' else  '落 '  from 表a
------解决方案----------------------創建測試環境 
 Create Table 表 
 (值 decimal(10, 2), 
  时间 dateTime) 
 Insert 表 Select 19.20,  '2007-03-01 13:00:00 ' 
 Union All Select 19.40,  '2007-03-01 14:00:00 ' 
 GO 
 --測試 
 Select 
 	A.值, 
 	A.时间, 
 	(Case When A.值 - IsNull(Max(B.值), 0) >  0 Then N '涨 ' When A.值 - IsNull(Max(B.值), 0) = 0 Then N '平 ' Else N '落 ' End) As 状态 
 From	 
 	表 A 
 Left Join 
 	表 B 
 On A.时间 >  B.时间 
 Group By 
 	A.值, 
 	A.时间 
 GO 
 --刪除測試環境 
 Drop Table 表 
 --結果 
 /* 
 值	时间			状态 
 19.20	2007-03-01 13:00:00.000	涨 
 19.40	2007-03-01 14:00:00.000	涨 
 */
------解决方案--------------------jydqwe(闲庭漫步) ( ) 信誉:100  2007-07-30 16:30:20  得分: 0         
    有点问题 就是并没有表b 一共只有一张表 
 是求出离记录时间最近的记录 并进行比较 如果不存在 就填写平.        
 -----------   
 你測試了沒?   
 我都寫出例子來了。   
 沒說你有表B,那裡的B是別名。   
 有點出入的是,如果不存在,那個語句填的是漲。
------解决方案--------------------晕哦,鱼 
 只有两行数据测试   
 Select 
 	A.值, 
 	A.时间, 
 	Case When B.值 is null then N '平 ' when A.值 - B.值 >  0 Then N '涨 ' When A.值 =B.值 Then N '平 ' Else N '落 ' End As 状态 
 From	 
 	表 A 
 Left Join 
 	表 B 
 On  B.时间=(select max(时间) from 表 where 时间 <a.时间) 
 order By 
 	A.时间 
------解决方案--------------------declare @a table(id int,name decimal(6,2),lasttime datetime) 
 insert into @a select 1,19.20, '2007-03-01 13:00:00 ' union all 
 select 2,19.40,  '2007-03-01 14:00:00 ' union all 
 select 3,19.50,  '2007-03-01 15:00:00 '      
 select a.*, 
 	case  when (a.name - b.name)> 0 then N '涨 '  
 		  when (a.name - isnull(b.name,a.name))=0 then N '平 '  
 		  else N '跌 'end  
     from @a a  
 		left join @a b on a.id = b.id  +1 
 --结果,多加了id列,可以加一个临时表加这个列 
 id          name                                    lasttime                 
 ----------- --------------------------------------- ----------------------- ---- 
 1           19.20                                   2007-03-01 13:00:00.000 平 
 2           19.40                                   2007-03-01 14:00:00.000 涨 
 3           19.50                                   2007-03-01 15:00:00.000 涨
------解决方案--------------------修改下   
 --創建測試環境 
 Create Table 表 
 (值 decimal(10, 2), 
  时间 dateTime) 
 Insert 表 Select 19.20,  '2007-03-01 13:00:00 ' 
 Union All Select 19.40,  '2007-03-01 14:00:00 ' 
 GO 
 --測試 
 Select