x
Person Beginning Ending Length
1 1/1/2022 12:25:00 1/1/2022 13:05:00 2400
I would like to parse this record across quarter buckets and the length spent in each quarter bucket.
Person Beginning Ending Length Bucket
1 1/1/2022 12:25:00 1/1/2022 13:05:00 300 12:15
1 1/1/2022 12:25:00 1/1/2022 13:05:00 900 12:30
1 1/1/2022 12:25:00 1/1/2022 13:05:00 900 12:45
1 1/1/2022 12:25:00 1/1/2022 13:05:00 300 13:00
Advertisement
Answer
Just another option … BRUTE FORCE
Example or dbFiddle
Select A.Person
,A.[Begining]
,A.[Ending]
,B.[Length]
,Bucket = left(convert(varchar(10),Bucket,8),5)
From YourTable A
Cross Apply ( Select [Length] = sum(1)
,Bucket
From (Select Top (datediff(SECOND,[Begining],[Ending])) D=dateadd(SECOND,-1+Row_Number() Over (Order By (Select NULL)),[Begining]) From master..spt_values n1, master..spt_values n2 ) B1
Cross Apply ( values (dateadd(minute,(datediff(minute,0,D) / 15 ) * 15,0) ) ) C(Bucket)
Group By Bucket
) B
Results