partition 取数据中相同字段数据中取时间最大的一个值 并只保留一条

目的:表中数据 某几个字段是重复的  现取出相同字段值时间最大的一个 并将其他删除
数据库:

----若只是单独的查询唯一的数据:去除重复的方法
select distinct(AppID) from dbo.T_Construct_ThreeTime
-----利用partition  通过actiondate时间排序 重复字段appid  取出以appid为相同数据 字段n从1开始的所有数据 【可添加其他字段 以逗号隔开】
select *,row_number() over(partition by appid order by actiondate desc) n from AuditInfo

-----利用with as 删除cte中的重复数据
;with cte as(
 select *,row_number() over(partition by appid order by actiondate desc) n from AuditInfo
)

----可先查询cte表数据 看是否通过appid相同字段 n为appid的自增值
-----select * from cte

删除cte表中 n不等于1的数据

delete from cte where n!=1  ---n=1即删除的是n=1的所有数据

 数据若不多 可以将数据去重 添加至临时表 删除表数据 临时表添加到此表【不推荐】

原文地址:https://www.cnblogs.com/suwh/p/2475411.html