Sql 删除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

我有在表中的政策,其中BK为他们

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。