Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

dados do último 4 trimestre


A parte complicada é chegar ao último dia do trimestre.

Esta solução calcula o dia inicial do intervalo subtraindo 9 meses da data de destino e truncando com o 'Q' máscara que nos dá o primeiro dia do trimestre. Em seguida, calculamos essa data novamente , subtrair um dia e adicionar doze meses e isso dá o último dia do trimestre atual:
with tgt as ( select date '2019-03-30' as dt from dual
              union all select date '2019-02-28' as dt from dual
              union all select date '2019-04-01' as dt from dual
)
select trunc(tgt.dt - interval '9' month, 'Q') as range_st,
       (trunc(tgt.dt - interval '9' month, 'Q') - 1) + interval '12' month as range_end
from tgt
/

Pode haver uma solução mais esperta por aí, mas este é o fim da minha pausa para o café :)