我正在进行tot := tot + v_row.SAVINGS;
,其中tot
初始化为0,v_row.SAVINGS初始化为null
。
现在我使用nvl function
为0
获取值null
而不是v_row.Savings
,因为我需要0
求和,如果有空但是当我返回时v_row
,如果求和值显示为0,那么我需要返回null
或blank space
值,我该怎么办呢。
注意:我将此用于报告目的,因此如果summation的值为零,那么我应该在报告中显示null或空格。
答案 0 :(得分:3)
NULLIF(expr1, expr2)在逻辑上等同于
CASE WHEN expr1 = expr 2 THEN NULL ELSE expr1 END
tot 可能为NULL, v_row.SAVINGS 可能为NULL。
在你返回之前将tot强制转换为NULL可能更合适。
示例:
tot := NULLIF(NVL(tot, 0) + NVL(v_row.SAVINGS, 0), 0)
答案 1 :(得分:0)
这应该有效:
tot := case when tot + v_row.SAVINGS = 0 then null else tot + v_row.SAVINGS end;