我已经看到了这个问题,它适用于两列
如何将其展开超过2个?例如,我一次最多可以总计10列,这会产生一种太长的表达方式。如果all都为null,则sum应返回null。
谢谢!
答案 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
。