【发布时间】:2019-12-16 03:22:47
【问题描述】:
我有一个包含期间开始和期间结束的日期范围列表。期间结束选择为期间开始日期后 3 个月
数据示例如下:
Row |Period start | Period end1 |2018-01-01 | 2018-04-012 |2018-01-05 | 2018-04-053 |2018-04-02 | 2018-07-014 |2018-05-02 | 2018-08-025 |2018-09-10 | 2018-12-09
我希望按顺序排列期间开始和结束,并删除日期范围重叠的情况
这个例子的解决方案是:
Row |Period start | Period end1 |2018-01-01 | 2018-04-013 |2018-04-02 | 2018-07-015 |2018-09-10 | 2018-12-09
解释我想要实现的逻辑:
第 1 行期间结束是 2018-04-01,我希望能够只包含期间开始严格大于此的下一行。 IE。第 3 行与 2018-04-02。
一旦选择 2018-04-02 作为后续行,我希望在此之后的下一行超出 (2018-07-02) 的期末范围。 IE。它将是第 5 行,因为 2018-09-10 不在 2018-07-01 范围内
是否有解决方案可以做到这一点? (无需递归)
【问题讨论】:
-
您是要从表中实际删除行,还是从查询的输出中排除它们?
-
顺便说一句,我认为如果没有递归或使用游标的存储过程,这将是不可能的。
-
我只是希望它们被标记,以便我可以将它们从查询的输出中排除
-
我已经使用存储过程和 while 循环解决了这个问题
标签: time teradata date-range overlapping teradata-sql-assistant