这是如何使用查询获取 2 个给定日期之间的月份列表的后续问题? 真的。(我怀疑这是因为我不太了解按级别连接子句背后的逻辑!)
我所拥有的是这样的数据列表
ID | START_DATE | END_DATE
1 | 01-JAN-2018 | 20-JAN-2018
2 | 13-FEB-2018 | 20-MAR-2018
3 | 01-MAR-2018 | 07-MAR-2018
我想尝试得到的是一个列表,其中包含每个 ID 的开始日期和结束日期之间的所有天数。
因此,例如,我想要一个给出的列表
ID | DATE
1 | 01-JAN-2018
1 | 02-JAN-2018
1 | 03-JAN-2018
...
1 | 19-JAN-2018
1 | 20_JAN-2018
2 | 13-FEB-2018
2 | 14-FEB-2018
2 | 15-FEB-2018
...
等等
我试图做的是调整上述链接中的一个答案,如下所示
select id
, trunc(start_date+((level-1)),'DD')
from (
select id
, start_date
, end_date
from blah
)
connect by level <= ((trunc(end_date,'DD')-trunc(start_date,'DD'))) + 1
这给了我我想要的东西,但随后有一大堆重复的日期,就好像它就像一个笛卡尔连接。我需要添加一些简单的东西来解决这个问题吗?