给定这个可爱的数据集,其中包含各种空白和重叠记录:
+---+--------+------+-------+-------+-----------+------------+------------+
| | BUS_LN | SGMT | STATE | TheID | ASSGND_TO | EFF_DT | END_DT |
+---+--------+------+-------+-------+-----------+------------+------------+
| 1 | A | B | LA | 12345 | AAA | 2015-01-01 | 2015-06-30 |
| 2 | A | B | LA | 12345 | AAA | 2015-10-01 | 2015-12-31 |
| 3 | A | B | LA | 12345 | AAA | 2016-01-01 | 2016-02-29 |
| 4 | A | B | LA | 12345 | AAA | 2016-03-01 | 2017-12-31 |
| 5 | A | B | LA | 12345 | AAA | 2018-01-01 | 9999-12-31 |
| 6 | A | B | LA | 67890 | BBB | 2015-01-01 | 2016-01-01 |
| 7 | A | B | LA | 67890 | BBB | 2016-01-01 | 2017-01-01 |
| 8 | A | B | LA | 67890 | CCC | 2017-01-01 | 2018-01-01 |
| 9 | A | B | LA | 67890 | BBB | 2018-01-01 | 9999-12-31 |
+---+--------+------+-------+-------+-----------+------------+------------+
如何在保留间隙和更改的同时折叠重叠? 第 1 行和第 2 行之间存在间隙。 第 3 行到第 5 行重叠。 第 6 行和第 7 行重叠。
它应该以以下方式结束:
+--------+------+-------+-------+-----------+------------+------------+
| BUS_LN | SGMT | STATE | TheID | ASSGND_TO | EFF_DT | END_DT |
+--------+------+-------+-------+-----------+------------+------------+
| A | B | LA | 12345 | AAA | 2015-01-01 | 2015-06-30 |
| A | B | LA | 12345 | AAA | 2015-10-01 | 9999-12-31 |
| A | B | LA | 67890 | BBB | 2015-01-01 | 2017-01-01 |
| A | B | LA | 67890 | CCC | 2017-01-01 | 2018-01-01 |
| A | B | LA | 67890 | BBB | 2018-01-01 | 9999-12-31 |
+--------+------+-------+-------+-----------+------------+------------+
我整天都在不同的圈子里,最近一次是记录得非常差的TD_NORMALIZE_OVERLAP_MEET
功能,但我一无所获。
看看 Teradata 的 Temporal -功能: - 它提供了一个PERIOD数据类型(而不是两个日期字段( - 它提供了规范化/分解/重叠/汇总有效日期周期的功能。