Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle - Daten in Quartale aufteilen

SELECT  ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL-1) )   AS qstart
    ,   ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL) ) -1  AS qend
FROM    (   SELECT  TO_DATE('&start_date')  AS start_date
                ,   TO_DATE('&end_date')    AS end_date
            FROM    DUAL
        ) PARAM
CONNECT BY ADD_MONTHS( TRUNC(PARAM.start_date, 'Q'), 3*(LEVEL) ) -1
        <= PARAM.end_date

Regeln für Parameter, eventuell müssen Sie die Abfrage an Ihre Zwecke anpassen:

  • Wenn start_date nicht der exakte Quartalsstart ist, wird effektiv das enthaltene Startdatum des Quartals verwendet.
  • Wenn end_date nicht das genaue Quartalsende ist, enden wir mit dem Quartal, das VOR end_date endete (nicht dasjenige, das das Enddatum enthält).