Как сделать значение названием колонки
У меня есть таблица:
market | region | open_time
pyat msk 09:00
pyat kiev 10:00
mag msk 22:00
...
и нужно получить следующее
market | msk | kiev
pyat 09:00 10:00
mag 22:00 null
Основная проблема заключается в том, что при SELECT open_time as region он присваивает названию колонки слово region а не само значение (название региона )
Ответы (2 шт):
Автор решения: 0xdb
→ Ссылка
Попробуйте с PIVOT клаузой (см. pivot_clause):
with t ("market", "region", "open_time") as (
select 'pyat', 'msk', '09:00' from dual union all
select 'pyat', 'kiev', '10:00' from dual union all
select 'mag', 'msk', '22:00' from dual)
-- отсюда начинается сам запрос, выше тестовые данные
select *
from t
pivot (max ("open_time") for "region" in ('msk' as "msk", 'kiev' as "kiev"))
/
Результат:
mark msk kiev
---- ----- -----
pyat 09:00 10:00
mag 22:00 null
Автор решения: 0xdb
→ Ссылка
На любом брэнде БД должен работать такой запрос:
select
market as "market",
max(case region when 'msk' then open_time end) as "msk",
max(case region when 'kiev' then open_time end) as "kiev"
from t
group by market
order by market desc
Проверить можно на db<>fiddle. Для SQLite дало такой результат:
market msk kiev
------ ----- -----
pyat 09:00 10:00
mag 22:00 null