Ý tưởng như sau
- Chọn tất cả con đặt hàng trong vòng một giờ với ID (Cha mẹ) tối thiểu có thể. (Tôi giả định rằng ở đây OrderID thấp nhất cũng sẽ là cũ nhất OrderID).
- Nối các kết quả này với bảng gốc.
- Sử dụng các kết quả này làm cơ sở cho tuyên bố cập nhật.
Câu lệnh 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