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

Jak rozdělit měsíce a seskupit měsíce po čtvrtletí

Problém s řešením, které jste vyzkoušeli, je, že vám chybí krok.

Pokud jsou vaše čtvrtletí o jeden měsíc mimo „standardní“ čtvrtletí, musíte – s daným datem, jakýmkoli datem – posunout datum o jeden měsíc dopředu, pak zkrátit na čtvrtletí a poté stáhnout o jeden měsíc zpět. Provedli jste kroky 2 a 3, ale chybí vám krok 1.

with
  inputs ( dt ) as (
    select to_date('02-Jan-18', 'dd-Mon-yy') from dual union all
    select to_date('02-Feb-18', 'dd-Mon-yy') from dual union all
    select to_date('05-Mar-18', 'dd-Mon-yy') from dual union all
    select to_date('08-Apr-18', 'dd-Mon-yy') from dual union all
    select to_date('05-May-18', 'dd-Mon-yy') from dual union all
    select to_date('05-Jun-18', 'dd-Mon-yy') from dual union all
    select to_date('05-Jul-18', 'dd-Mon-yy') from dual union all
    select to_date('09-Aug-18', 'dd-Mon-yy') from dual union all
    select to_date('10-Sep-18', 'dd-Mon-yy') from dual union all
    select to_date('11-Oct-18', 'dd-Mon-yy') from dual union all
    select to_date('11-Nov-18', 'dd-Mon-yy') from dual union all
    select to_date('11-Dec-18', 'dd-Mon-yy') from dual
  )
select dt,
       add_months(trunc(add_months(dt, 1), 'q'), -1) as qtr
from   inputs;

DT          QTR     
---------   ---------
02-Jan-18   01-Dec-17
02-Feb-18   01-Dec-17
05-Mar-18   01-Mar-18
08-Apr-18   01-Mar-18
05-May-18   01-Mar-18
05-Jun-18   01-Jun-18
05-Jul-18   01-Jun-18
09-Aug-18   01-Jun-18
10-Sep-18   01-Sep-18
11-Oct-18   01-Sep-18
11-Nov-18   01-Sep-18
11-Dec-18   01-Dec-18


  1. Může cizí klíč odkazovat na nejedinečný index?

  2. Metoda ExecuteBatch vrací pole s hodnotou -2 v jazyce Java

  3. Odeberte opakující se data ve sloupci

  4. Jak mohu exportovat několik sloupců z MySQL do textového souboru