Oracle
 sql >> Baza danych >  >> RDS >> Oracle

dane z ostatnich 4 kwartałów

Trudną częścią jest zdobycie ostatniego dnia kwartału.

To rozwiązanie oblicza dzień początkowy zakresu, odejmując 9 miesięcy od daty docelowej, a następnie obcinając za pomocą 'Q' maska ​​która daje nam pierwszy dzień kwartału. Następnie obliczamy tę datę ponownie , odejmij jeden dzień, a następnie dodaj dwanaście miesięcy, co daje ostatni dzień bieżącego kwartału:

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
/

Być może istnieje lepsze rozwiązanie, ale to już koniec mojej przerwy na kawę :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Co oznacza poprzedni w Oracle?

  2. Jak rozwiązywać problemy z wydajnością za pomocą instrukcji Oracle SQL?

  3. Problem tworzenia klucza obcego w Oracle

  4. Oracle:Używanie podzapytania w wyzwalaczu

  5. Jak mogę uzyskać unikalne znaki z ciągu w Oracle?