我怎样才能只合并随后发生的日期。?
(即,下一个事件在前一个事件完成后立即开始)。
在这里,我们还需要考虑其他一些列来获取输出。
这是示例事件甘特图的附加屏幕截图。 下表包含事件(分别为 M_ID、Y_ID、T_ID、E_ID、BeginDate、EndDate)
CREATE TABLE #EventTable
(
M_ID INT,
Y_ID INT,
T_ID INT,
E_ID INT,
BeginDate DATE,
EndDate DATE
);
下面的插入语句用于示例数据设置。
INSERT INTO #EventTable
VALUES
(135709, 2, 7, 1, '01 Jan 2017', '31 Mar 2017'),
(135709, 2, 7, 1, '01 Apr 2017', '30 Jun 2017'),
(135709, 2, 7, 3, '01 Jan 2017', '31 Jan 2017'),
(135709, 2, 7, 3, '01 Feb 2017', '30 Apr 2017'),
(135709, 2, 7, 3, '01 May 2017', '31 May 2017'),
(135709, 2, 7, 3, '01 Jul 2017', '31 Aug 2017'),
(135709, 2, 7, 3, '01 Oct 2017', '31 Oct 2017'),
(135709, 2, 7, 3, '01 Dec 2017', '31 Dec 2017'),
(135709, 5, 8, 1, '01 Feb 2017', '30 Apr 2017'),
(135709, 5, 8, 1, '01 Apr 2017', '31 Jul 2017'),
(134560, 5, 8, 3, '01 Apr 2017', '31 Aug 2017'),
(134560, 5, 8, 3, '01 May 2017', '31 Aug 2017'),
(134560, 5, 8, 3, '01 Oct 2017', '31 Oct 2017'),
(134560, 5, 8, 3, '01 Nov 2017', '30 Nov 2017'),
(135678, 3, 6, 2, '01 Jan 2017', '31 Mar 2017'),
(135678, 3, 6, 2, '01 Apr 2017', '30 Jun 2017'),
(135678, 3, 6, 2, '01 Oct 2017', '31 Oct 2017'),
(135678, 3, 6, 2, '01 Nov 2017', '31 Dec 2017'),
(123457, 4, 2, 3, '01 May 2017', '31 Oct 2017');
例子:
对于M_ID = 135709, Y_ID = 2, T_ID = 7 and E_ID = 1
;
第 2 场活动在(2017 年 3 月 31 日)第 1 场活动结束后立即开始(2017 年 4 月 1 日)。
因此,在这种情况下,输出应该是第一个事件的开始日期(2017 年 1 月 1 日)和第二个事件的结束日期(2017 年 6 月 30 日)。
同样,对于M_ID = 135709, Y_ID = 2, T_ID = 7 and E_ID = 3
;
第 2 场比赛于 2017 年 2 月 1 日开始,紧接着第 1 场比赛于 2017 年 1 月 31 日结束。
第 3 场赛事在(2017 年 4 月 30 日)第二场赛事结束后立即开始(2017 年 4 月 1 日)。
因此,在这种情况下,输出应该是第一个事件的开始日期(2017 年 1 月 1 日)和第三个事件的结束日期(2017 年 6 月 30 日)。
并且由于在第 4 个事件 StartDate 和第 3 个事件 EndDate 之间存在 GAP(即第 4 个事件不会在第 3 个事件之后开始),因此日期应该保持不变。
有人可以帮我吗。?