2012-05-08 5 views
1

Je dois pouvoir utiliser une requête de sélection qui génèrera en quelque sorte une liste d'entrées consistant en des incréments mensuels de deux variables STARTDATE et ENDDATE. Un exemple ressemblerait à ceci:Sélectionner une requête qui crée une table d'entrées incrémentales mensuelles

Obtenir le STARTDATE et ENDDATE de la table

STARTDATE ENDDATE 
----------- ----------- 
01-JAN-2011 1-DEC-2011 

qui se traduit par

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 

Toutes les idées sur la façon de le faire? Quelqu'un m'a parlé d'une méthode appelée 'CONNECT BY' mais elle ne fonctionne pas avec l'année bissextile ou quelque chose comme ça.

Merci.

Répondre

3

Quelque chose comme cela devrait fonctionner

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. 
Questions connexes