Приведенный ниже код дает мне правильный результат, но в sql это можно сделать без рекурсивного cte?Может быть, крест применяется.
declare @t table
(locationID int,
StartTime datetime,
EndTime datetime
)
insert @t
values (1,'1900-01-01 08:00','1900-01-01 19:30')
;
insert @t
values (2,'1900-01-01 10:00','1900-01-01 15:00')
;
insert @t
values (3,'1900-01-01 09:30','1900-01-01 21:00')
;
with cte_t
as
(
select locationID, StartTime, EndTime, StartTime as [Time]
from @t
union all
select locationID, StartTime, EndTime, dateadd(mi,30,[Time]) as [Time]
from cte_t
where [Time] < [EndTime]
)
select * from cte_t order by locationID