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

Addition of many columns that can be null in Oracle SQL

我看过这个问题,它适用于两列

Addition with NULL values

如何扩展超过 2 个?例如,我一次最多可以汇总 10 列,这会生成一个太长的表达式。如果全部为空,则总和应 return 为空。

谢谢!

我不认为参考是一个很好的答案。更好的答案——适用于你的情况——是:

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

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

请注意,如果所有值都是 NULL,则此 returns 0,而不是 NULL。如果你想返回NULL,你可以这样做:

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

这会放入一个附加系数,该系数要么为零,要么为 NULL,将表达式转回 NULL