Вы должны считать NULL
, когда критерии в вашем выражении CASE
не совпадают. Кроме того, я предпочитаю считать 1
, если вы действительно не хотите считать сами идентификаторы. Эта версия должна работать:
SELECT
COUNT(CASE WHEN MONTH(lf.DateIn) = 1 THEN 1 END) AS '1',
COUNT(CASE WHEN MONTH(lf.DateIn) = 2 THEN 1 END) AS '2'
FROM HrAttLogsFormatted AS lf
WHERE
lf.DateIn BETWEEN '2019-01-01' AND '2019-02-31' AND
lf.Late != '';
Обратите внимание, что текущее значение, которое вы видите, равно сумме отдельных значений, то есть:
1378 = 792 + 586
Причиной этого является то, что функция COUNT
"считает" любое не NULL
значение как 1, а любое NULL
значение как ноль. Ваше текущее CASE
выражение будет всегда считать 1, для каждой записи в таблице.