使用SQL Server 2008 R2,結合連續日期範圍
我試圖日期範圍組合成給出的最大日期範圍是一個結束日期旁邊以下的開始日期。
該數據是關於不同的就業。一些員工可能已經結束了工作,並在晚些時候重新加入。這些應該算作兩種不同的僱用(例如ID 5)。有些人有不同類型的就業機會,一個接一個地工作(結束日期和開始日期),在這種情況下,它應該被視爲總共一個就業機會(例如ID 30)。
尚未結束的就業期限結束日期爲null。
一些例子大概是啓發:
declare @t as table (employmentid int, startdate datetime, enddate datetime)
insert into @t values
(5, '2007-12-03', '2011-08-26'),
(5, '2013-05-02', null),
(30, '2006-10-02', '2011-01-16'),
(30, '2011-01-17', '2012-08-12'),
(30, '2012-08-13', null),
(66, '2007-09-24', null)
-- expected outcome
EmploymentId StartDate EndDate
5 2007-12-03 2011-08-26
5 2013-05-02 NULL
30 2006-10-02 NULL
66 2007-09-24 NULL
我一直在嘗試不同的「孤島和隙」技術,但一直沒能破解這一個。
不應'startDate == endDate'爲適當的重疊?否則將有24小時不明。 – MaxH
這將是存儲過程,是嗎?或通過查詢限制? – orrollo
@MaxH:實際上,日期時間用作日期。所以重疊是可以的。 –