1
ORACLE SQLのPIVOT関数でNULLを0に置き換えるにはどうすればよいですか?私が望む何ORACLE SQL:Pivot関数でNULLを0に置き換えるにはどうすればいいですか?
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
これは、いくつかのカテゴリとネストされたクエリを持つ複雑なクエリの非常に簡単な部分です。
SUM関数にCOALESCEを追加することはできますか?このように: ピボット(SUM(COALESCE(ORDERS、0))FOR ... – user3644952
'NVL(...、0)'内の各 'ORDERS'をラップすることはうまくいくでしょう同じこと)。 – mathguy