У меня проблемы с разработкой запроса, в котором мне нужно объединить вывод или два разных запроса и развернуть или транспонировать таблицу. Можно ли сделать запрос динамическим, так как данные в таблице могут увеличиваться вместе с множественным выбором "d". Это довольно сложная задача для меня, быть новичком на платформе.
-- Output of query 1
select created, sum(value) as D 1 from XYZ where d = '123'
group by created order by created asc
Created D 1
--------- ---
2/28/2019 123
3/1/2019 123
3/6/2019 645
3/7/2019 785
3/8/2019 234
-- Output of query 2
select created, sum(value) as D 2 from XYZ where d = '243'
group by created order by created asc
Created D 2
--------- ---
2/28/2019 46
3/1/2019 2355
3/7/2019 347
-- Expected result
Created 2/28/2019 3/1/2019 3/6/2019 3/7/2019 3/8/2019
D 1 123 1236 645 785 2345
D 2 46 2355 null 347 null
Любое предложение или помощь приветствуется.
Благодарю.
Вы можете попробовать использовать функцию агрегирования условия и CASE WHEN
.
select CASE WHEN d = '123' THEN 'D1'
WHEN d = '243' THEN 'D2' END "created",
sum(CASE WHEN created = TO_DATE('2/28/2019','MM/dd/yyyy') THEN value END) as "2/28/2019",
sum(CASE WHEN created = TO_DATE('3/1/2019','MM/dd/yyyy') THEN value END) as "3/1/2019",
sum(CASE WHEN created = TO_DATE('3/6/2019','MM/dd/yyyy') THEN value END) as "3/6/2019",
sum(CASE WHEN created = TO_DATE('3/7/2019','MM/dd/yyyy') THEN value END) as "3/7/2019",
sum(CASE WHEN created = TO_DATE('3/8/2019','MM/dd/yyyy') THEN value END) as "3/8/2019"
from XYZ
where d in ('123','243')
group by CASE
WHEN d = '123' THEN 'D1'
WHEN d = '243' THEN 'D2'
END
order by created