アイデアは次のとおりです
- すべての子を選択 可能な限り最小の (親) ID で 1 時間以内に注文します。 (ここでは、最小の OrderID が 最も古い であると想定しています 注文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