Bik*_*own 5 sql ms-access count
为了便于讨论,请考虑 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
Run Code Online (Sandbox Code Playgroud)
我想统计一个部门中某个角色的用户。如果我执行一个简单的 count(),我会返回正确的 0:
SELECT COUNT(ID) as ct
FROM Test
WHERE role >=101 and division=1;
Run Code Online (Sandbox Code Playgroud)
产量
division ct
1 0
Run Code Online (Sandbox Code Playgroud)
但是,我想在结果中包含除法编号(为了进一步加入、报告等),并且它总是返回空/无行,而不是除法和计数 0:
SELECT division, COUNT(ID) as ct
FROM Test WHERE role >=101
GROUP BY division
HAVING division=1;
Run Code Online (Sandbox Code Playgroud)
或者
SELECT division, COUNT(ID) as ct
FROM Test
WHERE role >=101 AND division=1
GROUP BY division;
Run Code Online (Sandbox Code Playgroud)
产量
division ct
Run Code Online (Sandbox Code Playgroud)
我最初想到这个是因为如果用户输入一个不在表中的分区(比如 4),我也希望它能够工作...
SELECT division, COUNT(ID) as ct
FROM Test
WHERE role >=101 AND division IN (1,2,4)
GROUP BY division;
Run Code Online (Sandbox Code Playgroud)
产量
division ct
2 3
Run Code Online (Sandbox Code Playgroud)
代替
division ct
1 0
2 3
4 0
Run Code Online (Sandbox Code Playgroud)
如果计数为 0,是否无法将除法与计数一起返回?
这个怎么样:
SELECT division, ISNULL(ct,0) AS ct
FROM divisionTable
LEFT JOIN
(SELECT division, COUNT(ID) as ct FROM Test WHERE role >=101 GROUP BY division) CountQuery
ON divisionTable.division = CountQuery.division
WHERE divisionTable.division IN (1,2,4)
Run Code Online (Sandbox Code Playgroud)