By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Declare @YourTable Table ([GRPNBR] varchar(50),[CHECK_IN] varchar(50),[Date_of_check_in] date,[CHECK_IN_ORDER] varchar(50))
Insert Into @YourTable Values
('200-001','S1','1/15/2020',3)
,('200-001','Y23','3/4/2020',15)
,('200-001','M56','5/6/2020',17)
,('200-001','UN','8/31/2020',38)
,('200-001','T1','10/12/2020',78)
,('200-001','C T28','11/23/2020',91)
,('200-001','C M3','1/29/2021',93)
,('200-001','P1','4/22/2021',94)
,('200-001','CM9','8/4/2021',95)
,('200-001','CM10','9/4/2021',97)
;with cte1 as (
Select *
,Grp = sum( case when CHECK_IN like '_1' then 1 else 0 end ) over ( partition by [GRPNBR] order by date_of_check_in)
from @YourTable
)
, cte2 as (
Select *
,RN = row_number() over ( partition by Grp order by date_of_check_in)
,_Check_In = max( case when CHECK_IN like '_1' then CHECK_IN end ) over ( partition by Grp )
From cte1
)
Select GRPNBR
,Check_In = _Check_In
,Post_Check_In = max( Check_In )
,Date_of_check_in = max(Date_of_check_in)
,Check_In_Order = max(Check_In_Order)
From cte2
Where RN>1
Group By GRPNBR,_Check_In,Grp,_Check_In,RN
Order By Grp,RN
GRPNBR | Check_In | Post_Check_In | Date_of_check_in | Check_In_Order |
---|---|---|---|---|
200-001 | S1 | Y23 | 2020-03-04 | 15 |
200-001 | S1 | M56 | 2020-05-06 | 17 |
200-001 | S1 | UN | 2020-08-31 | 38 |
200-001 | T1 | C T28 | 2020-11-23 | 91 |
200-001 | T1 | C M3 | 2021-01-29 | 93 |
200-001 | P1 | CM9 | 2021-08-04 | 95 |
200-001 | P1 | CM10 | 2021-09-04 | 97 |
Warning: Null value is eliminated by an aggregate or other SET operation.