ORACLE SQL: Wie Ersetze ich NULL mit 0 in einer Pivot-Funktion
Wie kann ich ersetzen, NULL durch 0 in eine PIVOT-Funktion in ORACLE SQL?
Dies ist die Abfrage, die ich bin versucht zu schreiben:
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'
)
)
)
;
Was ich möchte ist, einen Tisch zu haben, wenn ein Kunde nicht haben, um auf eine bestimmte Kategorie, würde es wieder 0 anstatt NULL. wie diese:
CUSTOMER_ID CAT_01 CAT_02 CAT_03
00001 0 100 0
00002 100 0 0
00003 0 0 100
Bitte beachtet, dass dies eine sehr vereinfachte Teil einer komplexen Abfrage mit mehreren Kategorien und geschachtelte Abfragen.
InformationsquelleAutor user3644952 | 2016-07-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie ändern Sie die
select *
Teil der Abfrage an der Spitze, geben Sie die Spalten einzeln, so dass Sie wickeln Sie Sie in Gespräche, umnvl
. Sie können auchcoalesce
wenn Sie mögen.Es würde funktionieren, und die Umhüllung jeder
ORDERS
innerhalbNVL( ..., 0)
würde genauso gut funktionieren (Sie bedeuten das gleiche).mit VERBINDEN hat bei mir nicht funktioniert, wenn Sie es innerhalb der aggregate-Funktion in der PIVOT
InformationsquelleAutor sstan