我需要能够使用一个选择查询,它将以某种方式生成一个条目列表,其中包含来自两个变量STARTDATE和ENDDATE的月增量。一个例子如下:
从表格中获取STARTDATE和ENDDATE
STARTDATE ENDDATE
----------- -----------
01-JAN-2011 1-DEC-2011
导致
CALENDAR
---------
01-JAN-11
01-FEB-11
01-MAR-11
01-APR-11
01-MAY-11
01-JUN-11
01-JUL-11
01-AUG-11
01-SEP-11
01-OCT-11
01-NOV-11
01-DEC-11
关于如何做到这一点的任何想法?有人告诉我一个名为'CONNECT BY'的方法,但它不适用于闰年或类似的东西。
感谢。
答案 0 :(得分:3)
这样的事情应该有效
SQL> ed
Wrote file afiedt.buf
1 with x as (
2 select date '2011-01-01' start_date,
3 date '2011-12-01' end_date
4 from dual
5 )
6 select add_months( start_date, level-1 )
7 from x
8* connect by level <= months_between( end_date, start_date ) + 1
SQL> /
ADD_MONTH
---------
01-JAN-11
01-FEB-11
01-MAR-11
01-APR-11
01-MAY-11
01-JUN-11
01-JUL-11
01-AUG-11
01-SEP-11
01-OCT-11
01-NOV-11
01-DEC-11
12 rows selected.