小编典典

获取相同FK的日期差异最高的前一个记录

sql

我需要在一小时内插入同一位客户的前1条记录。如果一小时后插入记录,则不需要该记录。请参见下表。这只是1000条记录的样本。我正在使用SQL Server
2005。

替代文字http://img651.imageshack.us/img651/3990/customershavingmultiple.png


阅读 167

收藏
2021-04-22

共1个答案

小编典典

想法如下

  • 一小时内选择所有 订单,并带有其最小(父)ID。(我在这里假设最低的OrderID也将是 最早的 OrderID)。
  • 将这些结果与原始表连接起来。
  • 将这些结果用作更新语句的基础。

SQL语句

UPDATE  Orders
SET     ParentOrderID = p.ParentOrderID
FROM    Orders o
        INNER JOIN (
          SELECT  ParentOrderID = MIN(o1.OrderID), OrderID = o2.OrderID
          FROM    Orders o1
                  LEFT OUTER JOIN Orders o2 ON 
                    o2.CustomerID = o1.CustomerID
                    AND o2.OrderDate > o1.OrderDate
                    AND DATEADD(hh, -1, o2.OrderDate) < o1.OrderDate
          GROUP BY o2.OrderID
        ) p ON p.OrderID = o.OrderID
2021-04-22