gpt4 book ai didi

sql - NVL 在查询中使用案例

转载 作者:可可西里 更新时间:2023-11-01 15:08:27 25 4
gpt4 key购买 nike

我们有一个在 NVL 语句中使用 case 的查询但是我认为可以删除 NVL

请引用以下查询部分 -

select f1, NVL((
CASE
WHEN PROD_CD = 'ESALE'
THEN SUM (prod_count)
WHEN PROD_CD = 'RSALE'
THEN (SUM (prod_count) * -1)
ELSE NULL
END),0) AS SALEQTY

这样写也能避免NVL吗

select f1, 
CASE
WHEN PROD_CD = 'ESALE'
THEN SUM (prod_count)
WHEN PROD_CD = 'RSALE'
THEN (SUM (prod_count) * -1)
ELSE 0
END AS SALEQTY,

最佳答案

首先,这是一个奇怪的结构。其次,与 NVL() 相比,我更喜欢 COALESCE()(标准函数)——但这无关紧要。

如果所有 prod_count 值都可以是 NULL给定的组。如果是这种情况,那么您需要进行外部检查。仅仅在不同的列上添加 ELSE 没有帮助。

我还会注意到逻辑看起来很可疑。通常 CASE 作为 SUM() 的参数——通常不需要 NULL 检查:

SELECT f1, 
SUM(CASE WHEN PROD_CD = 'ESALE'
THEN prod_count
WHEN PROD_CD = 'RSALE'
THEN - prod_count
ELSE 0
END) AS SALEQTY,

关于sql - NVL 在查询中使用案例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55626883/

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