Как заменить NULL на 0 в функции PIVOT на ORACLE SQL? Это запрос, я пытаюсь написать:ORACLE SQL: Как заменить NULL на 0 в функции Pivot
SELECT *
FROM
(
SELECT DISTINCT
CUSTOMER_ID AS CUSTOMER_ID,
CASE
WHEN CATEGORY_CODE = '01' THEN 'CAT 01'
WHEN CATEGORY_CODE = '02' THEN 'CAT 02'
WHEN CATEGORY_CODE = '03' THEN 'CAT 03'
ELSE 'OTHER' END AS CATEGORY,
SUM(ORDERS) AS ORDERS
FROM
TABLE_01
GROUP BY
CUSTOMER_ID,
CASE
WHEN CATEGORY_CODE = '01' THEN 'CAT_01'
WHEN CATEGORY_CODE = '02' THEN 'CAT_02'
WHEN CATEGORY_CODE = '03' THEN 'CAT_03'
ELSE 'OTHER' END
)
PIVOT
(
SUM(ORDERS)
FOR CATEGORY IN
(
'CAT_01',
'CAT_02',
'CAT_03',
'OTHER'
)
)
)
;
Что я хотел бы, чтобы иметь таблицу, когда клиент не имеет заказ на определенную категорию, она будет возвращать 0 вместо NULL , как это:
CUSTOMER_ID CAT_01 CAT_02 CAT_03
00001 0 100 0
00002 100 0 0
00003 0 0 100
Пожалуйста, имейте в виду, что это очень упрощенная часть сложного запроса с несколькими категориями и вложенных запросов.
Знаете ли вы, что я должен добавить COALESCE в функцию SUM, это сработает? Вот так: PIVOT (SUM (COALESCE (ORDERS, 0)) FOR ... – user3644952
Это сработало бы, и обертывание каждого 'ORDERS' в' NVL (..., 0) 'будет работать так же хорошо (они означают тоже самое). – mathguy