Не существует встроенного способа прозрачной интерпретации NULL
s как 0
s.
Возможно, вы ближе всего сможете получить с помощью такой функции
CREATE OR REPLACE FUNCTION MY_SUM(
n1 DECFLOAT DEFAULT NAN
,n2 DECFLOAT DEFAULT NAN
,n3 DECFLOAT DEFAULT NAN
,n4 DECFLOAT DEFAULT NAN
,n5 DECFLOAT DEFAULT NAN
) RETURNS DECFLOAT
RETURN
CASE WHEN COALESCE(NULLIF(n1,NAN),NULLIF(n2,NAN)) IS NOT NULL THEN
+ COALESCE(NULLIF(n1,NAN),0)
+ COALESCE(NULLIF(n2,NAN),0)
+ COALESCE(NULLIF(n3,NAN),0)
+ COALESCE(NULLIF(n4,NAN),0)
+ COALESCE(NULLIF(n5,NAN),0)
END
который вы можете расширить для поддержки большего количества столбцов при необходимости
SELECT MY_SUM(a,b) AS SUM
FROM TABLE(VALUES (NULL, NULL), (NULL, 1), (1, NULL), (1, 1)) T(a,b)
вернет
S
-
1
1
2
Примечание Функция может быть проще, если вы создадите одну функцию для каждого числа параметров, которое вы хотитесуммировать, но единственная функция с DEFAULT
s точнее