假设一个用户有多个设备,每个设备有多条记录。每条记录之间只有时间有差异。比如下面的记录
用户 设备 时间
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(SQL 2005+有效
SELECT ROW_NUMBER()OVER(PARTITION BY 用户,设备 ORDER BY 时间 DESC)RN
,*
FROM TB
)T
WHERE RN=1
------解决思路----------------------
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.时间)