Я думаю, что вы не должны использовать 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)))