分组取最新记录的SQL如何写?实在不好意思了,没分了。
sbid            revtime                                    interfacetype         value 
 08312      2007-8-11   11:00:00               7                                       12.90 
 08312      2007-8-11   12:00:00               7                                       12.21 
 08312      2007-8-11   12:00:00               10                                    112.90 
 如上记录,需要按interfacetype分组,然后取出时间最新的每个interfacetype的记录,就上面的记录而言,结果应该是最后两条记录合法。该怎么写? 
------解决方案--------------------sbid    revtime            interfacetype   value 
 08312  2007-8-11 11:00:00     7             12.90 
 08312  2007-8-11 12:00:00     7             12.21 
 08312  2007-8-11 12:00:00     10            112.90 
 如上记录,需要按interfacetype分组,然后取出时间最新的每个interfacetype的记录,就上面的记录而言,结果应该是最后两条记录合法。该怎么写?   
 ----------- 
 select * from t a 
 where not exists(select 1 from t where interfacetype=a.interfacetype and  revtime  <a.revtime)
------解决方案--------------------declare @test table (sbid varchar(10), revtime datetime, interfacetype int,  value money) 
 insert @test 
 select  '08312 ',  '2007-8-11 11:00:00 ',  '7 ', 12.90 union all 
 select  '08312 ',  '2007-8-11 12:00:00 ',  '7 ', 12.21 union all 
 select  '08312 ',  '2007-8-11 12:00:00 ',  '10 ', 112.90   
 select * from @Test a where revtime in (select top 1 revtime from @Test where interfacetype = a.interfacetype order by revtime desc) 
------解决方案--------------------create table t   
 (sbid  varchar(10),  revtime  datetime,          interfacetype  int, value numeric(12,2)) 
 insert into t 
 select  '08312 ',   '2007-8-11 11:00:00 ',     7 ,            12.90 union all 
 select  '08312 ',   '2007-8-11 12:00:00 ',     7 ,            12.21 union all 
 select  '08312 ',   '2007-8-11 12:00:00 ',     10,            112.90   
 select * from t a 
 where not exists(select 1 from t where interfacetype=a.interfacetype and  revtime > a.revtime)   
 sbid       revtime                                                interfacetype value           
 ---------- ------------------------------------------------------ ------------- --------------  
 08312      2007-08-11 12:00:00.000                                7             12.21 
 08312      2007-08-11 12:00:00.000                                10            112.90   
 (2 row(s) affected)
------解决方案--------------------select * 
 from @Test a 
 where revtime = 
    (select max(revtime) from @Test where interfacetype =  
        a.interfacetype)
------解决方案--------------------create table t   
 (sbid  varchar(10),  revtime  datetime,          interfacetype  int, value numeric(12,2)) 
 insert into t 
 select  '08312 ',   '2007-8-11 11:00:00 ',     7 ,            12.90 union all 
 select  '08312 ',   '2007-8-11 12:00:00 ',     7 ,            12.21 union all 
 select  '08312 ',   '2007-8-11 12:00:00 ',     10,            112.90   
 select * from t a 
 where not exists(select 1 from t where interfacetype=a.interfacetype and  revtim