postgresql - 使用给定日期拆分开始日期和结束日期
问题描述
我有以下场景,需要创建有效的查询。我可以使用过程或函数,但需要创建查询而不是过程和函数。
INPUT :
ID Start_Dt End_Dt Split_Dt
1 01-06-2020 30-06-2020 03-06-2020
2 15-07-2020 30-10-2020 12-08-2020
3 10-04-2020 20-05-2020 20-05-2020
4 20-04-2020 20-05-2020 20-04-2020
Scenario_1
Start_Date : 01-06-2020
End_Date : 30-06-2020
Split_Date : 03-06-2020
Scenario_2
Start_Date : 15-07-2020
End_Date : 30-10-2020
Split_Date : 12-08-2020
Output:
ID Start_Dt End_Dt Split_Dt
1 01-06-2020 03-06-2020 2020-06-03
1 04-06-2020 30-06-2020 2020-06-03
2 01-06-2020 12-08-2020 2020-06-03
2 13-08-2020 30-10-2020 2020-06-03
3 10-04-2020 20-05-2020 20-05-2020
4 20-04-2020 20-05-2020 20-04-2020
解决方案
看起来ID = 2
您的示例输出中的第一条记录有错误。
如果这是一个错误,那么这个查询应该可以工作:
select id, start_dt, split_dt
from date_splits
where start_dt < split_dt
union all
select id, split_dt + 1, end_dt
from date_splits
where split_dt + 1 < end_dt
order by id, start_dt;
推荐阅读
- c# - 如何从派生类调用 C# 基类默认构造函数
- reactjs - 使用反应套接字挂钩更新状态的正确方法
- python-3.x - 读取文本文件,在特定位置修改并在python中另存为新文件
- linux - 如何使用 perl 删除变量值的特定部分
- c++ - 为什么 std::set.erase(first, last) 会影响取自 (first, last) 的容器?
- vb.net - vb.net,希望能做个小程序
- python - 制作全局变量的本地副本
- scala - 导入 scala 包或 Any 类的 Object 类或 java.lang 在哪里?
- datetime - 将过滤器中的数据添加到 power bi 中的变量
- hibernate - Spring Data JPA - 如何在同一列上使用多个值实现 LIKE 搜索