sql >> Databáze >  >> RDS >> Oracle

Oracle - rozdělení dat na čtvrtletí

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

Pravidla pro parametry, možná budete muset upravit dotaz tak, aby vyhovoval vašim účelům:

  • Pokud počáteční_datum není přesný začátek čtvrtletí, efektivně použije počáteční datum obsahující čtvrtletí.
  • Pokud end_date není přesný konec čtvrtletí, končíme ve čtvrtletí, které skončilo PŘED datem ukončení (ne ve čtvrtletí obsahujícím datum ukončení).


  1. Mělo by být připojení k databázi stále otevřené nebo by se mělo otevřít pouze v případě potřeby?

  2. Jaká je výhoda použití try {} catch {} oproti if {} else {}

  3. Problém s SQLiteOpenHelper na Androidu 2.X a 3.X

  4. MYSQL a innoDB dynamicky mění AUTO_INCREMENT tabulky