ID       NAME                 RQ
         1 ABC        2004-1-1
1 ABC        2005-2-1
2 CBD        2004-1-2
2 CBD        2004-1-3
3 CDE        2007-1-1想 查询 每个ID 对应的最新的一个日期作为显示结果!该如何写SQL?显示结果如下:
         ID       NAME                 RQ
          1 ABC        2005-2-1
2 CBD        2004-1-3
3 CDE        2007-1-1

解决方案 »

  1.   

    select id,name,max(rq) rq from tb
    group by id,name
      

  2.   

    declare @t table(ID int,NAME varchar(10),RQ varchar(10))
    insert into @t select  1,'ABC','2004-1-1'
    union all select 1,'ABC','2005-2-1'
    union all select 2,'CBD','2004-1-2'
    union all select 2,'CBD','2004-1-3'
    union all select 3,'CDE','2007-1-1'select * from @t a where not exists(select 1 from @t where name=a.name and rq>a.rq)
      

  3.   

    若是ID相同时,NAME也相同的话,可以用1楼的,
    若不是,用3楼的
      

  4.   

    select * from 表 where rq>=any
    (select max(rq) from 表 group by name)
      

  5.   

    select * from 表 where rq>=any
    (select max(rq) from 表 group by id)
      

  6.   

    select * from @t a where not exists(select 1 from @t where name=a.name and rq>a.rq)select * from 表 where rq>=any
    (select max(rq) from 表 group by id)以上2中方法,能不能讲解一下 实现的思路啊!
      

  7.   

    select * from @t a where not exists(select 1 from @t where name=a.name and rq>a.rq)能不能 解释一下 实现的思路??
      

  8.   

    就是@t和@t自己比较,当一条记录不存在和他name相同rq比他大的纪录。也就说明它是最新的纪录。表达能力比较次.-_-!
      

  9.   

    select 1 是什么意思??
      

  10.   

    另外,我问以下还有没有别的实现思路比较明确的 SQL??
      

  11.   

    楼上的应该可以了
    select 1 就是作为这列的值
      

  12.   

    SELECT ID,NAME,MAX(RQ) AS RQ FROM DATATABLE GROUP BY ID,NAME
      

  13.   

    SELECT A.ID,A.NAME,A.RQ FROM TABLE_1 A 
    RIGHT JOIN 
    (SELECT ID,MAX(RQ) AS RQ FROM TABLE_1 GROUP BY ID) B 
    ON (A.RQ=B.RQ AND A.ID=B.ID) ORDER BY A.ID