使用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:实际上,日期时间用作日期。所以重叠是可以的。 –