Как вернуть значение типа «0», если используется счетчик и столбец пуст? - PullRequest
0 голосов
/ 13 декабря 2018

Я использую это как часть большего запроса

   LEFT JOIN ( SELECT value, COUNT(CASE WHEN value = '1' THEN '1' END) AS sum )

Проблема в том, что, поскольку это левое соединение, это значение не существует для всех результатов.Я хочу, чтобы когда значение не существовало, возвращалось «0».Я пытался использовать что-то вроде этого:

LEFT JOIN ( SELECT value, COUNT(CASE WHEN value = '1' THEN '1' ELSE '0' END) AS sum )

Но это все равно просто возвращает ноль.Как я могу вернуть '0', если значение равно нулю или, скорее, если значение не существует в базе данных для этого результата?Почему я не могу использовать ELSE для возврата «0», если значение не равно «1», потому что оно не отличается от «1», а просто не существует?

Спасибо.

1 Ответ

0 голосов
/ 13 декабря 2018

Вы не можете сделать это в LEFT JOIN, потому что строки не существует - поэтому значение по умолчанию равно NULL.

Вместо этого используйте COALESCE(), когда ссылаетесь на значение:

select coalesce(sum, 0)
. . .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...