teradata - 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 数据类型(而不是两个日期字段) - 它提供了规范化/分解/重叠/汇总有效日期期间的功能。
推荐阅读
- html - :not 与其实际用法相反
- azure - ARM 模板创建存储帐户和应用服务时出错
- amazon-web-services - AWS SAM & Parameter Store:如何选择参数以部署到不同的环境中
- r - 使用“neuralnet”R 库的 Dropout 和 batchNormalization
- c# - 是否可以创建具有动态数量的泛型参数的方法?
- javascript - 是否可以延迟播放多个音轨并全部循环播放?
- python - 使用切片/掩码而不是 for 循环来查找数组中的项目
- jquery - jQuery第一次点击被忽略?
- javascript - 如何在 GAS 中将 svg 文件作为 Web 应用程序提供
- javascript - 悬停“右移”菜单