选择创建每月增量条目表的查询

Posted

技术标签:

【中文标题】选择创建每月增量条目表的查询【英文标题】: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”的方法,但它不适用于闰年之类的。

谢谢。

【问题讨论】:

【参考方案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.

【讨论】:

以上是关于选择创建每月增量条目表的查询的主要内容,如果未能解决你的问题,请参考以下文章

Python DataFrame 从每日数据中选择每月增量的行

如何修复“缺少表的 FROM 子句条目”?

SQL查询从键表中选择多个条目到同一行的不同列中

MongoDB聚合查询返回集合中每年每月的条目总数,按位置值分组

MS Access:如何使用查询按月选择条目

d6 增量查询 - 获取最新条目