在 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
。
我看过这个问题,它适用于两列
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
。