在Oracle SQL中添加许多可以为null的列

时间:2015-01-07 14:26:26

标签: sql oracle null addition

我已经看到了这个问题,它适用于两列

Addition with NULL values

如何将其展开超过2个?例如,我一次最多可以总计10列,这会产生一种太长的表达方式。如果all都为null,则sum应返回null。

谢谢!

1 个答案:

答案 0 :(得分:2)

我不认为参考是一个非常好的答案。更好的答案 - 适用于您的情况 - 是:

select coalesce(a, 0) + coalesce(b, 0) + . . .

您可以使用此方法添加任意数量的变量。

请注意,如果所有值均为0,则会返回NULL,而不是NULL。如果您想要NULL返回,则可以执行以下操作:

select (coalesce(a, 0) + coalesce(b, 0) + . . . +
        (case when coalesce(a, b, . . . ) is not null then 0 else null end)
       )

这会产生一个额外的系数,该系数为零或NULL将表达式转回NULL