关于数据查询的问题(续)
现有表A 
 Name 
 -------- 
 aaa 
 bbb 
 ccc 
 ddd 
 eee   
 表B 
 Name   Value   Date   Time 
 ------------------------ 
 aaa      1.017   20060506   162341 
 ccc      1.025   20060504   104253 
 bbb      2.014   20060404   091523 
 ccc      1.052   20060301   081524 
 aaa      1.034   20060506   094232 
 bbb      1.225   20060302   103214 
 ddd      1.032   20060506   132544   
 我希望通过执行SQL得到下面结果   
 Name   Value   Date   Time 
 --------------------------- 
 aaa      1.017   20060506   162341 
 bbb      2.014   20060404   091523 
 ccc      1.025   20060504   104253 
 ddd      1.032   20060506   132544 
 eee      0               NULL               NULL   
 即查询出所有Name所对应的最新的Value   
 应该要用到左联和内联
------解决方案--------------------Select OrderID = Identity(Int, 1, 1) Into #T From B Order By Name, [Date], [Time] 
 Select  
 	A.Name, 
 	B.Value, 
 	B.[Date], 
 	B.[Time] 
 From 
 	A 
 Left Join 
 	#T B 
 On  
 	A.Name = B.Name 
 Inner Join 
 	(Select Name, Max(OrderID) As OrderID From #T Group By Name) C 
 On B.Name = C.Name And B.OrderID = C.OrderID   
 Drop Table #T
------解决方案--------------------create table #a 
 ( 
 [name] varchar(10) 
 )   
 insert into a 
 select  'aaa 'union all 
 select  'bbb 'union all 
 select  'ccc ' union all 
 select  'ddd ' union all 
 select  'eee '   
 create table #b 
 ( 
 [name] varchar(10), 
 [value] numeric(18,3), 
 [date] varchar(8), 
 [time] varchar(6) 
 )   
 insert into #b 
 select  'aaa ' , 1.017,  '20060506 ',  '162341 ' union all  
 select  'ccc ',  1.025,  '20060504 ',  '104253 ' union all  
 select  'bbb ',  2.014,  '20060404 ',  '091523 ' union all  
 select  'ccc ',  1.052,  '20060301 ',  '081524 ' union all  
 select  'aaa ' , 1.034,  '20060506 ',  '094232 ' union all  
 select  'bbb ',  1.225,  '20060302 ',  '103214 ' union all  
 select  'ddd ',  1.032,  '20060506 ',  '132544 '     
 --生成临时表,目的是增加自增列 
 select identity(int,1,1) as rowid,* into #  
 from #b 
 order by [date],[time]   
 --最终结果输出 
 select a.[name],a.[value],a.[date],a.[time] 
 from # a inner join (select max(rowid) as rowid from # group by [name]) b 
 on (a.rowid=b.rowid) 
 order by a.[name]   
 ----------------------- 
 结果: 
 name       value                date     time    
 ---------- -------------------- -------- ------  
 aaa                       1.017 20060506 162341 
 bbb                       2.014 20060404 091523 
 ccc                       1.025 20060504 104253 
 ddd                       1.032 20060506 132544   
 (所影响的行数为 4 行)
------解决方案--------------------晕用的着这么麻烦吗? 
 呵呵 
 select a.name,ob.value,ob.date,ob.time from 
 a left join b ob on  
 a.name=ob.name and (ob.date+ob.time)=(select max(ob.date+ob.time) from b where b.name=a.name)   
 这里 ob.date+ob.time 用个函数把它转成日期类型.