SQL Server 2008 R2 を使用して、
ある終了日が次の開始日の隣にあることを考慮して、日付範囲を最大の日付範囲に結合しようとしています。
データはさまざまな雇用に関するものです。一部の従業員は、雇用を終了し、後で再入社した可能性があります。これらは 2 つの異なる雇用としてカウントする必要があります (例 ID 5)。一部の人々は、さまざまなタイプの雇用を持ち、互いに続いています (終了日と開始日が連続しています)。この場合は、合計で 1 つの雇用と見なす必要があります (例 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
私はさまざまな「島とギャップ」の手法を試してきましたが、これを解読することはできませんでした.