【发布时间】:2022-01-06 15:12:13
【问题描述】:
所以基本上我想要实现的是,如果四列是空的,一列包含 1 作为值,一列包含 0,那么我想在一列中输入满足默认值(0.06077)条件的条目。
含义:如果 COL_A、COL_B、COL_C、COL_D IS NULL 且 COL_E = 0 AND COL_F = 0 则用默认值 0.06077 填充 COL_A 中满足这些条件的行。
我尝试了以下方法:
, CASE WHEN COL_A IS NULL AND COL_B IS NULL AND COL_C IS NULL AND COL_D IS NULL
AND COL_E = 0 AND COL_F = 1 THEN NVL(COL_A, 0.06077) END
以下确实填写了符合我设定条件的条目。有人知道潜在的解决方案吗?
【问题讨论】:
-
“没有用”不是很有帮助;你得到一个错误,或者只是不是你预期的结果?样本数据以及您当前和预期的结果会有所帮助。您希望哪一列为 0,哪一列为 1 尚不完全清楚,所以也许您有错误的方式。 It seems to roughly work though.(当您已经知道
COL_A为空时,您为什么还要使用NVL()?或者这应该是指不同的列?) -
请检查
nvlfunction 的工作原理,然后再次重写您的代码。如果case表达式的条件计算为TRUE,那么col_a当然为空,nvl毫无意义。另请发布整个 SQL 语句,而不是其中的一部分 -
只使用
0.06077而不是NVL(COL_A, 0.06077),因为COL_A是NULL。此外,您可能需要在 CASE epression 中添加 ELSE 部分。