gpt4 book ai didi

sql - ORACLE SQL : How do I replace NULL with 0 in a Pivot function

转载 作者:行者123 更新时间:2023-12-03 07:40:26 25 4
gpt4 key购买 nike

如何在 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

请记住,这是具有多个类别和嵌套查询的复杂查询的非常简化的部分。

最佳答案

您必须更改顶部查询的 select * 部分以单独指定列,以便您可以将它们包装在对 nvl 的调用中。如果您愿意,还可以使用coalesce

select customer_id,
nvl(cat_01, 0) as cat_01,
nvl(cat_02, 0) as cat_02,
nvl(cat_03, 0) as cat_03,
nvl(other, 0) as other
from (...

关于sql - ORACLE SQL : How do I replace NULL with 0 in a Pivot function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38234996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com