Het lastige is om de laatste dag van het kwartaal te halen.
Deze oplossing berekent de startdag van het bereik door 9 maanden af te trekken van de streefdatum en vervolgens af te kappen met de 'Q'
masker dat ons de eerste dag van het kwartaal geeft. Die datum berekenen we dan opnieuw , trek één dag af en tel er twaalf maanden bij op en dat geeft de laatste dag van het huidige kwartaal:
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
/
Er is misschien een geliktere oplossing, maar dit is het einde van mijn koffiepauze :)