Oracle
 sql >> база данни >  >> RDS >> Oracle

данни за последните 4 тримесечия

Сложната част е получаването на последния ден от тримесечието.

Това решение изчислява началния ден на диапазона чрез изваждане на 9 месеца от целевата дата и след това съкращаване с 'Q' маска, която ни дава първия ден от тримесечието. След това изчисляваме тази дата отново , извадете един ден, след което добавете дванадесет месеца и това дава последния ден от текущото тримесечие:

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
/

Може да има по-елегантно решение, но това е краят на моята пауза за кафе :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получа информация за собственик на индекс и таблица в Oracle?

  2. Какво е Oracle Database?

  3. Защо тази проверка за нулев асоциативен масив в PL/SQL е неуспешна?

  4. SQL регулярен израз за разделяне на колона (низ) на множество редове въз основа на разделител '/n'

  5. Получаване на преброяване/общо на всяко ниво на йерархична заявка с помощта на CONNECT BY