Sql 删除BK中的最后一行
我有在表中的政策,其中BK为他们Sql 删除BK中的最后一行,sql,sql-server-2008,group-by,Sql,Sql Server 2008,Group By,我有在表中的政策,其中BK为他们 VIN + ProgramCode + ValidFrom 表的结构如下所示 ID, ProgramCode, VIN, ValidFrom, CreationDate 问题是我只需要保留具有唯一VIN和最新值Creation\u date的保单,其余的都需要删除。我不知道使用group by时应该使用什么查询。使用窗口功能行数 delete from ( select * ,row_number() over(partition by Pr
VIN + ProgramCode + ValidFrom
表的结构如下所示
ID, ProgramCode, VIN, ValidFrom, CreationDate
问题是我只需要保留具有唯一
VIN
和最新值Creation\u date
的保单,其余的都需要删除。我不知道使用group by时应该使用什么查询。使用窗口功能行数
delete from
(
select * ,row_number() over(partition by ProgramCode, VIN, ValidFrom order by Creation_date desc) as rn
) as t where t.rn!=1
注意:对于大数据集,最好将unike数据保留在新表中,然后删除旧表,然后以旧名称重命名新表BK?添加一些示例表数据和预期结果-全部作为格式化文本,而不是图像。同时标记您正在使用的dbms。