sql >> Base de Datos >  >> RDS >> Oracle

datos del último 4 trimestre

La parte complicada es conseguir el último día del trimestre.

Esta solución calcula el día de inicio del rango restando 9 meses de la fecha objetivo y luego truncando con la 'Q' careta que nos regala el primer día del trimestre. Luego calculamos esa fecha nuevamente , reste un día y luego agregue doce meses y eso da el último día del trimestre actual:

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
/

Puede haber una solución más ingeniosa, pero este es el final de mi descanso para tomar café :)