背景
我在Access数据库中有一个表(我们称之为[tblMyTable])。该表每月有数千个条目,每个条目属于一个类别,例如:
ID Month Category
-- ----- --------
1 1 White
2 1 Black
3 2 White
...etc.
问题:
当我运行我的(稍微简化)查询时
SELECT tblMyTable.Month, COUNT(tblMyTable.ID) AS CountedIDs
FROM tblMyTable
WHERE tblMyTable.Category = "Black"
GROUP BY tblMyTable.Month
回报是:
Month Count
----- -----
1 1
而我期望/需要的是:
Month Count
----- -----
1 1
2 0
我尝试使用NZ()
函数强制返回“0”,但也没有任何运气,因此在这里与所有人联系......
如果遗失任何内容或看起来很奇怪,请大声喊出来,我会尽力解决。
答案 0 :(得分:1)
创建一个名为[MonthNumbers]的表,如此
MonthNumber
-----------
1
2
3
4
5
6
7
8
9
10
11
12
然后使用以下查询(其中包含原始查询作为子查询):
SELECT
mn.MonthNumber AS Month,
Nz(gb.CountedIDs, 0) AS CountedIDs
FROM
MonthNumbers mn
LEFT JOIN
(
SELECT
tblMyTable.Month,
COUNT(tblMyTable.ID) AS CountedIDs
FROM tblMyTable
WHERE tblMyTable.Category = "Black"
GROUP BY tblMyTable.Month
) gb
ON gb.Month = mn.MonthNumber
返回
Month CountedIDs
----- ----------
1 1
2 0
3 0
4 0
5 0
6 0
7 0
8 0
9 0
10 0
11 0
12 0