valeryk2000 (9/27/2016)
This is the fragment of the table
CREATE TABLE [dbo].[Readmission_Table](
[ID] [float] NULL,
[ArrivalDateTime] [datetime] NULL
) ON [PRIMARY]
GO
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10000683, CAST(0x0000A66801716A50 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10000683, CAST(0x0000A66900B9AB40 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10000989, CAST(0x0000A64000B778C0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10000989, CAST(0x0000A65101735680 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10001033, CAST(0x0000A65200F54510 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10001033, CAST(0x0000A66200B91EA0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10001350, CAST(0x0000A64D01526100 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10001350, CAST(0x0000A66F007055D0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10002866, CAST(0x0000A63B01305240 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10002866, CAST(0x0000A63E014D6F60 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10003932, CAST(0x0000A65800C27540 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10003932, CAST(0x0000A66201422C90 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10004218, CAST(0x0000A665013357B0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10004218, CAST(0x0000A66A00EC34C0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10004220, CAST(0x0000A662006D5060 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10004220, CAST(0x0000A66E0072CEA0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10005862, CAST(0x0000A66000A06680 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10005862, CAST(0x0000A662009EC0A0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10006299, CAST(0x0000A64000CC5880 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10006299, CAST(0x0000A645014272E0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10007852, CAST(0x0000A64F00563E20 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10007852, CAST(0x0000A65600BE1040 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10008474, CAST(0x0000A65500163F50 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10008474, CAST(0x0000A66F00503340 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10009346, CAST(0x0000A6470130DEE0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10009346, CAST(0x0000A64E009A5BA0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10009346, CAST(0x0000A651017BDA30 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10009903, CAST(0x0000A64E0123AFE0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10009903, CAST(0x0000A659015752A0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10009903, CAST(0x0000A65A0008CA00 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10010401, CAST(0x0000A64E00549840 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10010401, CAST(0x0000A65600305700 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10011580, CAST(0x0000A63E015798F0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10011580, CAST(0x0000A6570126B550 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10011580, CAST(0x0000A65D0105BFD0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10012712, CAST(0x0000A64E00AB1CB0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10012712, CAST(0x0000A65D00041EB0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10012887, CAST(0x0000A64001586BE0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10012887, CAST(0x0000A66901236990 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10014218, CAST(0x0000A63A00C6DA40 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10014218, CAST(0x0000A64B00B80560 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10014918, CAST(0x0000A63D01731030 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10014918, CAST(0x0000A64000C9DFB0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10014918, CAST(0x0000A6490123F630 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10015000, CAST(0x0000A63D00CAF8F0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10015000, CAST(0x0000A65701388FA0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10015401, CAST(0x0000A665015BB7A0 AS DateTime))
INSERT [dbo].[Readmission_Table] ([ID], [ArrivalDateTime]) VALUES (10015401, CAST(0x0000A669015D1730 AS DateTime))
Since this is SQL 2008, you will need a triangular join to access the PREVIOUS/NEXT rows of data.
WITH cteWindow AS (
SELECT
m.ID, m.ArrivalDateTime
, rn = ROW_NUMBER() OVER (PARTITION BY m.ID ORDER BY m.ArrivalDateTime)
, EndOf72HrWindow = DATEADD(HOUR, 72, m.ArrivalDateTime)
FROM [dbo].[Readmission_Table] AS m
)
, cteIsInWindow AS (
SELECT curr.ID, curr.ArrivalDateTime
, IsInPrev72HrWindow = CASE WHEN curr.ArrivalDateTime < prv.EndOf72HrWindow THEN 1 ELSE 0 END
, IsInNext72HrWindow = CASE WHEN curr.EndOf72HrWindow > nxt.ArrivalDateTime THEN 1 ELSE 0 END
, PrevArrivalDateTime = prv.ArrivalDateTime
, NextArrivalDateTime = nxt.ArrivalDateTime
FROM cteWindow AS curr
LEFT JOIN cteWindow AS prv
ON curr.ID = prv.ID
AND curr.rn = prv.rn +1
LEFT JOIN cteWindow AS nxt
ON curr.ID = nxt.ID
AND curr.rn = nxt.rn -1
)
SELECT cte.ID, cte.ArrivalDateTime
FROM cteIsInWindow AS cte
WHERE IsInPrev72HrWindow = 1
OR IsInNext72HrWindow = 1
ORDER BY cte.ID, cte.ArrivalDateTime;