id name desc    stsdt
1  name1 desc1  20080202 22:00:00
1  name1 desc2  20080203 23:00:00
1  name1 desc3  20080303 22:00:00
2  name2 desc1  20080202 22:00:00
2  name2 desc2  20080204 22:00:00
2  name3 desc3  20080205 22:00:00有如上数据,想要的结果是这样的
1  name1 desc3  20080303 22:00:00
2  name3 desc3  20080205 22:00:00
就是取同id中最新日期的那条注:同id的数据有N>=1条,存在不同id
主要是id和stsdt决定全部。

解决方案 »

  1.   

    select a.* from table a
    where not exists(select 1 from table b where b.id = a.id and b.stsdt > a.stsdt)
      

  2.   

    select *
      from (select A.*,
                   row_number() over(partition by id order by stsdt desc) AS SHOW
              from 表 as A
           ) b
     where b.SHOW = 1上面SQL可以。
      

  3.   


    select t.* from tb t where stsdt = (select max(stsdt) from tb where id = t.id) order by t.id