当前位置: 代码迷 >> Sql Server >> 在其他字段值相同的条件下,怎么从多条数据中取出时间最近的一个
  详细解决方案

在其他字段值相同的条件下,怎么从多条数据中取出时间最近的一个

热度:81   发布时间:2016-04-24 09:24:45.0
在其他字段值相同的条件下,如何从多条数据中取出时间最近的一个
假设一个用户有多个设备,每个设备有多条记录。每条记录之间只有时间有差异。比如下面的记录
用户    设备   时间
A         aaa      getdate()
A         aaa      getdate()-1
B         bbb     getdate()
B         bbb     getdate()-1
从这四条记录中取出每个用户最近的一条记录,得到下面的结果集:
A         aaa      getdate()
B         bbb     getdate()


请问大家,有没有简单的方法

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

------解决思路----------------------
SELECT * FROM(
SELECT ROW_NUMBER()OVER(PARTITION BY 用户,设备 ORDER BY 时间 DESC)RN
,*
FROM TB
)T
WHERE RN=1
SQL 2005+有效
------解决思路----------------------
select name ,device,MAX(t_date) as t_date,type ,state from #a where state='正常' group by name,device,type,state

------解决思路----------------------


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

------解决思路----------------------
select * 
from Tb as a
where not exists(select 1 from Tb as b where b.用户=a.用户 and a.设备=b.设备 and b.时间 > a.时间)
  相关解决方案