如何在使用WHERE(微软访问)

时间:2016-09-03 21:17:26

标签: sql ms-access subquery

我有两张桌子,其中一张桌子代表调查的位置,另一张桌子代表受访者(每次调查都有很多人)。我试图显示每个地点超过一定年龄的人数,但有些省份没有超过特定年龄的人,因此不会在结果表格中显示。如果没有人超过一定年龄,我希望计数显示为零。 我有:

SELECT a.location, Count([b.age])
FROM Survey AS a LEFT JOIN person AS b ON a.surveyid = b.surveyid
Where b.age >= 85
GROUP BY a.location;

我意识到WHERE子句正在消除零计数结果,但我无法弄清楚我需要的子查询。

1 个答案:

答案 0 :(得分:2)

改为使用条件聚合。这意味着将布尔条件移动到聚合函数的参数

SELECT s.location,
       SUM(IIF(p.age >= 85, 1, 0))
FROM Survey AS s LEFT JOIN
     person AS p
     ON s.surveyid = p.surveyid
GROUP BY s.location;

注意到我将表别名更改为表名的缩写。这使查询更容易理解。