Поворот выходного

0

У меня проблемы с разработкой запроса, в котором мне нужно объединить вывод или два разных запроса и развернуть или транспонировать таблицу. Можно ли сделать запрос динамическим, так как данные в таблице могут увеличиваться вместе с множественным выбором "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

Любое предложение или помощь приветствуется.

Благодарю.

Теги:
pivot
oracle-sqldeveloper
oracle11g

1 ответ

0

Вы можете попробовать использовать функцию агрегирования условия и 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 

Ещё вопросы

Сообщество Overcoder
Наверх
Меню