【问题标题】:Select query that creates a table of monthly incremental entries选择创建每月增量条目表的查询
【发布时间】:2012-05-08 01:41:47
【问题描述】:

我需要能够使用选择查询以某种方式生成一个条目列表,该列表由两个变量 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”的方法,但它不适用于闰年之类的。

谢谢。

【问题讨论】:

    标签: sql oracle


    【解决方案1】:

    这样的东西应该可以工作

    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.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-09
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 1970-01-01
      • 2021-10-19
      相关资源
      最近更新 更多