【问题标题】:Delete customer orders over two years old from their last order date从最后一个订单日期起删除超过两年的客户订单
【发布时间】:2022-12-18 09:49:17
【问题描述】:

我需要为个人客户删除超过两年的记录。
由于表中的行数,我正在寻找一种有效的解决方案。

在下面的简化示例中,我希望删除记录 Order_ID o3,因为它从 customer_id 1 最后一个订单日期 01/01/2022 开始已有两年多了

以下是我的表格的简单视图

Order_ID    Customer_ID     Order_Date  
o1          1               01/01/2022  
o2          2               02/02/2022  
o3          1               01/01/2019

删除,因为距离客户#1 的最后一个订单已经过去两年多了

o4          1               01/01/2021  
o5          2               01/08/2021  

【问题讨论】:

  • 日期为 2020-07-01 的东西也是如此不是被删除,因为它在 2022-01-01 的 2 年内?

标签: sql sql-server sql-delete


【解决方案1】:

您可以在子查询中获取每个用户的 MAX 日期,并使用 DATEADD 函数获取每个用户的 MAX(最近订单)日期之前 2 年的日期,并加入此以做删除:

  delete t 
  from yourtable t
  inner join
  (
     select Customer_ID, DATEADD(year, -2, MAX(ORDER_DATE)) as order_date
     from yourtable
     group by Customer_ID
  ) x
  on t.Customer_ID = x.Customer_ID
  where t.ORDER_DATE < x.order_date

【讨论】:

    猜你喜欢
    • 2023-01-21
    • 1970-01-01
    • 2010-12-08
    • 1970-01-01
    • 2023-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    相关资源
    最近更新 更多