选择用于创建月度增量条目表的查询

时间:2012-05-08 01:41:48

标签: sql oracle

我需要能够使用一个选择查询,它将以某种方式生成一个条目列表,其中包含来自两个变量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'的方法,但它不适用于闰年或类似的东西。

感谢。

1 个答案:

答案 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.