See if this example works for you?CREATE TABLE #Packs
(Packuser INT, OrderId INT, PackDate DATETIME);
INSERT INTO #packs VALUES
(1,100, '2012-07-13 14:26:37.380'),
(1,101, '2012-07-13 14:26:39.380'),
(1,102, '2012-07-13 14:27:39.000'),
(1,103, '2012-07-12 14:27:39.000'),
(2,104, '2012-07-12 14:27:39.000'),
(2,105, '2012-07-13 14:27:39.000'),
(3,106, '2012-07-13 14:27:39.000'),
(4,107, '2012-07-13 14:27:39.000'),
(5,108, '2012-07-13 14:27:39.000'),
(5,109, '2012-07-13 14:26:40.000')
SELECT
a.PackUser,
a.OrderId,
a.PackDate,
b.OrderId AS AdjacentOrderId,
b.PackDate AS AdjacentPackDate
FROM
#packs a
CROSS APPLY
(
SELECT TOP 1 b.OrderId, b.PackDate
FROM #packs b
WHERE b.PackUser = a.PackUser
AND DATEDIFF(second,a.PackDate,b.PackDate) BETWEEN 0 AND 60
AND a.orderId <> b.OrderId
AND DATEADD(dd,DATEDIFF(dd,0,b.PackDate),0) = DATEADD(dd,DATEDIFF(dd,0,GETDATE()),0)
ORDER BY b.PackDate ASC
) b;
DROP TABLE #packs;