declare @test table
(
ID int,
[DATETIME] DATETIME
)
insert @test
values(1116, '2012-12-03 14:46:46.000'),
(1116 , '2012-12-03 18:12:17.000'),
(1116 , '2012-12-03 19:00:11.000'),
(1116 , '2012-12-03 21:00:15.000'),
(1116 , '2012-12-04 09:06:54.000'),
(1116 , '2012-12-04 17:46:08.000'),
(1116 , '2012-12-05 09:09:36.000'),
(1116 , '2012-12-05 17:04:33.000'),
(1114 , '2012-12-06 09:22:01.000'),
(1114 , '2012-12-06 17:46:13.000'),
(1117 , '2012-12-07 09:04:37.000'),
(1117 , '2012-12-07 17:46:39.000')
SELECT ID, MIN([DATETIME]) AS TIMEIN,MAX([DATETIME]) AS TIMEOUT
FROM
(
SELECT ROW_NUMBER() OVER (PARTITION BY ID ORDER BY DATETIME ) AS Seq,*
FROM @test
)t
GROUP BY ID, (Seq-1) /2
ORDER BY ID,MIN(Seq)
output
------------------------------------------------------
ID TIMEIN TIMEOUT
------------------------------------------------------
1114 2012-12-06 09:22:01.000 2012-12-06 17:46:13.000
1116 2012-12-03 14:46:46.000 2012-12-03 18:12:17.000
1116 2012-12-03 19:00:11.000 2012-12-03 21:00:15.000
1116 2012-12-04 09:06:54.000 2012-12-04 17:46:08.000
1116 2012-12-05 09:09:36.000 2012-12-05 17:04:33.000
1117 2012-12-07 09:04:37.000 2012-12-07 17:46:39.000
------------------------------------------------------------------------------------------------------
SQL Server MVP
http://visakhm.blogspot.com/