我需要在一小时内插入同一客户的前 1 条记录。如果记录在一小时后插入,则不需要该记录。
请参见下表。这只是数千条记录的样本。我正在使用 SQL Server 2005。
替代文本 http://img651.imageshack.us/img651/3990/customershavingmultiple.png http://img651.imageshack.us/img651/3990/customershavingmultiple.png
思路如下
- 全选child一小时内使用其最小可能的(父)ID 下订单。 (我在这里假设最低的 OrderID 也将是oldest订单 ID)。
- 将这些结果与原始表连接起来。
- 使用这些结果作为更新语句的基础。
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)