我有以下情况,需要创建有效的查询。我可以使用过程或函数,但需要创建查询而不是过程和函数。
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
答案 0 :(得分:0)
在示例输出的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;