Подтвердить что ты не робот

Мой запрос SUM возвращает значение null. Он должен вернуть 0

Я пытаюсь суммировать балансы клиентов, используя следующий запрос:

select sum(balance) from mytable where customer = 'john' 

Однако, если у клиента нет баланса (т.е. нет соответствующих строк в таблице mytable), мой запрос возвращает null, а не 0. В чем проблема?

4b9b3361

Ответ 1

Попробуйте следующее:

select COALESCE(sum(balance),0) from mytable where customer = 'john' 

Это должно делать работу. Метод coalesce должен возвращать значение 0.

Ответ 2

Это не проблема. Если строк нет, sum() вернет null. Он также вернет null, если все строки имеют баланс null.

Вместо этого возвратите нуль, попробуйте:

select isnull(sum(balance),0) from mytable where customer = 'john' 

Ответ 3

select coalesce(sum(coalesce(balance,0)),0) from mytable where customer = 'john' 

Ответ 4

Попробуйте следующее:

select sum(IsNull(balance,0)) from mytable where customer = 'john' 

Ответ 5

Возможно, вы думаете о COUNT поведении?

COUNT(Field) вернет 0, но SUM(Field) возвращает NULL, если нет соответствующих строк.

Вам понадобится ISNULL или COALESCE

COALESCE или ISNULL