Существующие решения верны, но не объясняйте, почему вы видите это явление.Count
в операторах SQL возвращает количество ненулевых значений в запросе.Поскольку ваш запрос возвращает 1 или 0, count
будет использовать оба значения.
Это можно решить с помощью sum
для добавления значений в столбец (согласно решению @ Adrian) или путем изменения case
оператор для возврата null
для записей, которые не должны учитываться (согласно решению @ ypercube).
Оба решения работают примерно одинаково и возвращают одинаковый результат, так что на самом деле это всего лишьличные предпочтения.