Teradata - 无法折叠重叠的行并保留间隙



给定这个可爱的数据集,其中包含各种空白和重叠记录:

+---+--------+------+-------+-------+-----------+------------+------------+
|   | 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数据类型(而不是两个日期字段( - 它提供了规范化/分解/重叠/汇总有效日期周期的功能。

最新更新