Я хочу иметь возможность рассчитывать разные возрастные диапазоны для разных дат на протяжении года без необходимости объединения всех.
Теперь запрос будет выглядеть примерно так:
SELECT
to_char(last_day(add_months(sysdate,-1)),'YYYYMM') yrmnth,
FLOOR(months_between(last_day(add_months(sysdate,-1)),birth_date)/12),
count(distinct id) members
from agefile
WHERE to_char(from_date, 'YYYYMM')<=to_char(last_day(add_months(sysdate,-1)),'YYYYMM')
and to_char(thru_date, 'YYYYMM')>=to_char(last_day(add_months(sysdate,-1)),'YYYYMM')
GROUP BY to_char(last_day(add_months(sysdate,-1)),'YYYYMM'),
FLOOR(months_between(last_day(add_months(sysdate,-1)),birth_date)/12)
UNION ALL
SELECT
to_char(last_day(add_months(sysdate,-2)),'YYYYMM') yrmnth,
FLOOR(months_between(last_day(add_months(sysdate,-2)),birth_date)/12),
count(distinct id) members
from agefile
WHERE to_char(from_date, 'YYYYMM')<=to_char(last_day(add_months(sysdate,-2)),'YYYYMM')
and to_char(thru_date, 'YYYYMM')>=to_char(last_day(add_months(sysdate,-2)),'YYYYMM')
GROUP BY to_char(last_day(add_months(sysdate,-2)),'YYYYMM'),
FLOOR(months_between(last_day(add_months(sysdate,-2)),birth_date)/12)
UNION ALL
and so on...
Итак, вместо того, чтобы передать возрастной файл 12 раз, я хочу передать его один раз, но вывести 12-кратное число возрастов.
Пример:
yrmnth age members
201809 1 100
201809 2 120
201809 3 145
201808 1 56
«Сколько членов было возрастом x на последний день каждого месяца за последние 12 месяцев» - это бизнес-вопрос
Любойспособ обойти передачу 12 раз и сделать это с помощью одного выбора?
спасибо