Поворот более чем на один столбец из исходной таблицы - PullRequest
0 голосов
/ 23 октября 2019

У меня есть запрос, в котором работает поворот на один столбец и получение общих условных обозначений, но мне также нужно получить общее значение для другого столбца (тип).

Я попытался создать еще один сводный показатель, чтобы показатьитого для столбца типа из исходной таблицы.

SELECT * FROM (SELECT venue, type_, notional FROM ABC ) PIVOT ( SUM(notional) FOR (venue) IN ('A' as A1 , 'B' as B1) ) PIVOT ( SUM(notional) FOR (type_) IN ('Prime') );

Я ожидаю увидеть один пивот, который будет отображать итоговую сумму для Prime, A1 и B1.

1 Ответ

0 голосов
/ 23 октября 2019

Я думаю, что вы не должны использовать pivot для этой проблемы, но простые агрегатные функции:

SELECT SUM(CASE WHEN venue = 'A' THEN notional END) AS venueA
     , SUM(CASE WHEN venue = 'B' THEN notional END) AS venueB
     , SUM(CASE WHEN type_ = 'Prime' THEN notional END) AS Prime
  FROM ABC

Если это действительно только один тип, вы можете сделать следующее:

SELECT * FROM 
   (SELECT venue
         , SUM(CASE WHEN type_ = 'Prime' THEN notional END) over() prime
         , notional 
      FROM ABC ) 
  PIVOT ( SUM(notional) FOR (venue) IN ('A' as A1 , 'B' as B1) )

Если существует более одного типа, вам нужно выполнить несколько PIVOT запросов, а затем JOIN их потом:

SELECT * FROM 
   (SELECT * FROM (SELECT venue, notional FROM ABC ) 
     PIVOT ( SUM(notional) FOR (venue) IN ('A' as A1 , 'B' as B1) )) 
CROSS JOIN 
   (SELECT * FROM (SELECT type_, notional FROM ABC ) 
     PIVOT ( SUM(notional) FOR (type_) IN ('Prime' AS Prime)))
...