希望这是一个直截了当的问题(但我怀疑答案很难)。我有2个表,日期范围覆盖相同的“整体”范围,但TABLE_A的范围最初分解了一些,而TABLE_B稍后将其分解:
CREATE TABLE #TABLE_A (
START_DT datetime,
END_DT datetime)
INSERT INTO #TABLE_A VALUES ('4/1/1993', '4/29/1993');
INSERT INTO #TABLE_A VALUES ('4/29/1993', '5/12/1993');
INSERT INTO #TABLE_A VALUES ('5/13/1993', '5/26/1993');
INSERT INTO #TABLE_A VALUES ('5/27/1993', '8/18/1993');
INSERT INTO #TABLE_A VALUES ('2/10/1994', '2/23/1994');
INSERT INTO #TABLE_A VALUES ('2/25/1994', '3/9/1994');
INSERT INTO #TABLE_A VALUES ('3/10/1994', '5/5/1994');
CREATE TABLE #TABLE_B (
START_DT datetime,
END_DT datetime)
INSERT INTO #TABLE_B VALUES ('4/1/1993', '5/12/1993');
INSERT INTO #TABLE_B VALUES ('5/13/1993', '8/18/1993');
INSERT INTO #TABLE_B VALUES ('2/10/1994', '2/22/1994');
INSERT INTO #TABLE_B VALUES ('2/24/1994', '3/23/1994');
INSERT INTO #TABLE_B VALUES ('3/24/1994', '4/20/1994');
INSERT INTO #TABLE_B VALUES ('4/21/1994', '5/5/1994');
我想要的是一个结合了这些范围的TABLE_C:
START DT END DT
4/1/1993 4/29/1993 FROM TABLE A
4/29/1993 5/12/1993 FROM TABLE A
5/13/1993 5/26/1993 FROM TABLE A
5/27/1993 8/18/1993 FROM TABLE A
2/10/1994 2/22/1994 FROM TABLE A or TABLE B
2/23/1994 3/9/1994 FROM TABLE A
3/10/1994 3/23/1994 START DT FROM TABLE A, END DT FROM TABLE B
3/24/1994 4/20/1994 FROM TABLE B
4/21/1994 5/5/1994 FROM TABLE B
我对如何创建TABLE_C的任何建议持开放态度。我已经看过尝试使用MERGE,SSIS,游标等,但不断陷入困境或认为必须有一个更简单的方法。有关如何处理此问题的任何建议?我看了“类似的问题”,我似乎无法找到解决我的特定问题。如果基本上已经提出这个问题,我很抱歉。
由于
答案 0 :(得分:1)
你不会找到一个简单的答案。您将不得不制作一个自定义函数或过程,其中包含您想要的确切逻辑。抱歉。想象一下基于start_dt和每个元组的时间长度的一些软迭代。
答案 1 :(得分:0)
从中选择不同的START_DT,END_DT ( 从#TABLE_A中选择START_DT,END_DT 联盟 从#TABLE_b中选择START_DT,END_DT )B'/ P>
您可以根据需要更改日期格式,并在表格中插入所选数据。它显示合并数据。