我有以下給出:查詢時間段分割成更小的段
1-僱員時間表
declare @table table (EmployeeId int,StartOn datetime,EndOn datetime)
insert into @table(EmployeeId,StartOn,EndOn)
values(1,'15 Dec 2015 09:00','15 Dec 2015 17:00')
2-歇時間採取
declare @break table(EmployeeId int,StartOn datetime,EndOn datetime)
insert into @break(EmployeeId,StartOn,EndOn)
values(1,'15 Dec 2015 09:45','15 Dec 2015 10:10')
insert into @break(EmployeeId,StartOn,EndOn)
values(1,'15 Dec 2015 11:30','15 Dec 2015 12:00')
3 - 的出來應來作爲
EmployeeId Date From To Type
1 '15 Dec 2015' '09:00' '09:45' 'F' -- Working
1 '15 Dec 2015' '09:45' '09:10' 'B' -- Break
1 '15 Dec 2015' '10:10' '11:30' 'F' -- Working
1 '15 Dec 2015' '11:30' '12:00' 'B' -- Break
1 '15 Dec 2015' '12:00' '17:00' 'F' -- Working
c urrently我能夠得到這個結果作爲遊標,我想提高性能,並將結果從光標轉換爲查詢。
任何幫助,將不勝感激。
唉,我認爲解決的辦法要麼需要累計總和,'滯後()',或遞歸CTE。在SQL Server 2008中,這些都不會比基於遊標的解決方案快得多。 –
@GordonLinoff我編輯了標籤,我想看看如何使用滯後或遞歸cte來完成,現在我正試圖用遞歸來解決它 – Monah