sql分组后重复数据取时间最新的⼀条记录
1.取时间最新的记录不分组有重复(多条CreateTime⼀样的都是最新记录)
select*
from test t
where
pid
in
(
select PId from Test tdrop table if exists admin
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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论