Bagian yang sulit adalah mendapatkan hari terakhir kuartal.
Solusi ini menghitung hari mulai rentang dengan mengurangkan 9 bulan dari tanggal target dan kemudian memotong dengan 'Q'
topeng yang memberi kita hari pertama kuartal. Kami kemudian menghitung tanggal itu lagi , kurangi satu hari lalu tambahkan dua belas bulan dan itu memberikan hari terakhir kuartal saat ini:
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
/
Mungkin ada solusi yang lebih licin di luar sana, tetapi ini adalah akhir dari rehat kopi saya :)