Как составить условие - результат за несколько месяцев по состоянию на заданный день месяца?
Необходимо получить количество строк за 3 последних месяца. Количество в каждом месяце до дня равного сегодняшнему дню. Например, если сегодня 24.08, то с 1-го по 24-е каждого месяца.
Пример ожидаемого результата:
Июнь | 1000
Июль | 800
Август | 900
Где Июнь - с 1.06 по 24.06, Июль - с 1.07 по 24.07, Август - 1.08 по тек. дату (24.08).
Ответы (1 шт):
Автор решения: 0xdb
→ Ссылка
Например, вот так:
with t (qty, dt) as (
select 10, date'2015-01-01'+level-1
from dual connect by level<=3650
)
select to_char (trunc (dt, 'mm'), 'Mon') month, count (*) count, sum (qty) sum
from t
where dt between add_months (sysdate, -3) and sysdate
and extract (day from dt) <= extract (day from sysdate)
group by trunc (dt, 'mm')
order by trunc (dt, 'mm')
/
Результат:
MONTH COUNT SUM
------------ ---------- ----------
Jun 24 240
Jul 24 240
Aug 24 240