La idea es la siguiente
- Seleccionar todos los hijos pedidos dentro de una hora con su mínimo posible (Padre)ID. (Supongo aquí que el ID de pedido más bajo también será el más antiguo Id. de pedido).
- Une estos resultados con la tabla original.
- Utilice estos resultados como base para la declaración de actualización.
Declaración 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