В вашем выражении слишком много круглых скобок, но это не влияет на результаты, только на удобочитаемость и удобство обслуживания.
SUM()
возвращает NULL
только тогда, когда выражение в SUM()
- это NULL
для всех строк. Это потому, что SUM()
игнорирует NULL
значения, поэтому, если хотя бы один результат выражения не был NULL
, то SUM()
не было бы NULL
.
Выражение будет NULL
, если любое значений в строке равно NULL
. Это потому, что добавление NULL
к любому значению возвращает NULL
- в отличие от SUM()
. Итак, я предполагаю, что одно или несколько значений NULL
в любой заданной строке.
Вы можете исправить это, заменив NULL
значения на 0
, используя COALESCE()
:
sum( coalesce(generalSum.total, 0) +
coalesce(FFBHARVESTINGsum.total, 0) +
coalesce(PRUNINGsum.total, 0) +
. . .
)
Это не имеет ничего общего с использованием вида как такового .