SQL - разбить данные на два столбца
Есть таблица типа patient_id, fio, sex(пол), date(дата регистрации). Необходимо сделать свод, сколько женщин зарегистрировалось в одном месяце, сколько в другом. То есть на выходе должна получится таблица вида:
Пол | Май | Апрель |
---|---|---|
Жен | 5 | 6 |
Муж | 2 | 15 |
select case when tag_period='per1' then count(c_pat_all) end as c_pat_all_1,
case when tag_period='per2' then count(c_pat_all) end as c_pat_all_2
from(
select * from(
select ls.pat_id as c_pat_all
, 'per1' as tag_period from list_serv ls
where ls.dat between TO_DATE('2023-03-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and TO_DATE('2023-03-31 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
)
union all
select * from(
select ls.pat_id as c_pat_all
, 'per2' as tag_period from list_serv ls
where ls.dat between TO_DATE('2023-04-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') and TO_DATE('2023-04-30 00:00:00', 'yyyy-mm-dd hh24:mi:ss')
)
)
group by tag_period
подскажите, какими средствами sql oracle это можно сделать? Проблема возникает при попытке вывода двух столбцов.
На выходе получаю пустые строки вида:
Источник: Stack Overflow на русском