你的情况可以直接MAX GROUP BY
SELECT 用户,设备,MAX( 时间)
FROM TB
GROUP BY 用户,设备

解决方案 »

  1.   

    你好,如果有其他字段不相同的话,又该如何处理?比如下面的记录
    用户    设备       时间                     类型         状态
    A         aaa      getdate()                 0             正常
    A         aaa      getdate()-1             1             报停  
    B         bbb     getdate()                  1            报停
    B         bbb     getdate()-1              0             正常
    我想获得的结果集是:
    用户    设备       时间                     类型         状态
    A         aaa      getdate()                 0             正常
    B         bbb     getdate()                  1             报停
      

  2.   

    SELECT * FROM(
    SELECT ROW_NUMBER()OVER(PARTITION BY 用户,设备 ORDER BY 时间 DESC)RN
    ,*
    FROM TB
    )T
    WHERE RN=1SQL 2005+有效
      

  3.   

    select name ,device,MAX(t_date) as t_date,type ,state from #a where state='正常' group by name,device,type,state
      

  4.   

    select * 
    from TB  a
    where not exist (select * from TB where 用户=a.用户 and 时间 > a.时间)
      

  5.   

    select * 
    from Tb as a
    where not exists(select 1 from Tb as b where b.用户=a.用户 and a.设备=b.设备 and b.时间 > a.时间)