表内容如下
NAME   ID       B         C        D           A-TIME
1          1          *          *          *          2012/05/04
1          2          #          #          #          2012/05/03
1          3          #          *          #          2012/05/02
2          4          *          *          *          2012/05/04
2          5          #          #          #          2012/05/03如何将相同Name且A-Time最新的记录查询出来. (结果要ID为1,4的记录,且同时显示所有列)
请教SQL语句如何写.

解决方案 »

  1.   

    select * from tb where id in(select MAX(id) from tb group by  A-TIME having COUNT( A-TIME)>1)
      

  2.   

    SELECT name,max( A-TIME) from table1 group by name
      

  3.   

    相同NAME多个相同日期只显示一条的
    SELECT *
    FROM (
    SELECT *,ROWNUMBER() OVER(PARTITION BY NAME ORDER BY [A-TIME] DESC) AS NUM FROM TB
    ) T WHERE NUM=1相同NAME多个相同日期全显示的
    SELECT *
    FROM TB T1
    WHERE NOT EXISTS(
    SELECT 1 FROM TB T2 WHERE T2.NAME=T1.NAME AND T2.[A-TIME]>T1.[A-TIME]
    )
      

  4.   

    1楼回答是错的,只会显示NAME有重复的记录,2楼不能显示全部列
      

  5.   

    第一个SQL里应该是
    SELECT *
    FROM (
    SELECT *,ROW_NUMBER() OVER(PARTITION BY NAME ORDER BY [A-TIME] DESC) AS NUM FROM TB
    ) T WHERE NUM=1
    少打了个下划线