Для простоты обсуждения рассмотрим эту базовую таблицу (Тест) в Access ...
ID division name role
1 1 Frank 100
2 2 David 101
3 3 John 101
4 2 Mike 102
5 2 Rob 102
7 3 Dave 102
8 3 Greg 102
Я хочу посчитать пользователей определенной роли в подразделении. Если я сделаю простой count (), я получу верный 0:
SELECT COUNT(ID) as ct
FROM Test
WHERE role >=101 and division=1;
выходы
division ct
1 0
Тем не менее, я хочу включить в результаты номер деления (для дальнейшего объединения, отчетов и т. Д.), И он всегда возвращает ноль / нет строк вместо деления и счет 0:
SELECT division, COUNT(ID) as ct
FROM Test WHERE role >=101
GROUP BY division
HAVING division=1;
или
SELECT division, COUNT(ID) as ct
FROM Test
WHERE role >=101 AND division=1
GROUP BY division;
выходы
division ct
Первоначально я пришел к этому, потому что мне также хотелось бы, чтобы это работало, если пользователь вводит разделение, которого нет в таблице (например, 4) ...
SELECT division, COUNT(ID) as ct
FROM Test
WHERE role >=101 AND division IN (1,2,4)
GROUP BY division;
выходы
division ct
2 3
вместо
division ct
1 0
2 3
4 0
Разве невозможно вернуть деление вместе со счетчиком, если счет равен 0?