sql分组后重复数据取时间最新的一条记录
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sql分组后重复数据取时间最新的⼀条记录
1.取时间最新的记录不分组有重复(多条CreateTime⼀样的都是最新记录)
select*
from test t
where
pid
in
(
select PId from Test t
where
time=(select max(time) from Test t1 where t1.PId=t.PId)
group by Pid
)
and
time=(select max(time) from Test t1 where t1.PId=t.PId)
2.分组后取时间最新的记录
SELECT max(Id)/*注意Id必须使⽤聚合函数Max*/ , Pid, MAX(Time) as MaxTime
FROM Test
GROUP BY pid
3.如果Id是uuid类型⽆法使⽤max(id)的解决办法(使⽤开窗函数)
select *
from
(
select row_number() over(partition by[Pid]order by[Time]desc /*降序是为了where KeyId=1 (1是固定值第⼀条),如果升序由于不知道每组多少条where中KeyId就⽆法过滤了*/ ) as KeyId,*from Test ) d
where KeyId=1
From:
DROP TABLE IF EXISTS ##tmpTable; --存在表则删除
select CONVERT(varchar(100), @time, 23) --取datetime的年⽉⽇ 2019-12-17 select CONVERT(varchar(100), GETDATE(), 24) --取datetime的时间 10:57:47。