【问题标题】:delete the lastest row in BK删除 BK 中的最新行
【发布时间】:2019-02-23 16:58:07
【问题描述】:

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

VIN + ProgramCode + ValidFrom

表格的结构是

ID, ProgramCode, VIN, ValidFrom, CreationDate

问题是我只需要保留具有唯一VIN 和最新值Creation_date 的策略,其余的需要删除。我不知道应该使用 group by 来使用什么查询。

【问题讨论】:

  • BK?添加一些示例表数据和预期结果 - 全部作为格式化文本,而不是图像。同时标记您正在使用的 dbms。

标签: sql sql-server-2008 group-by


【解决方案1】:

使用窗口函数row_number

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数据保留在新表中,然后删除旧表,然后以旧名称重命名新表

【讨论】:

    猜你喜欢
    • 2017-07-03
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多