我有两张桌子,其中一张桌子代表调查的位置,另一张桌子代表受访者(每次调查都有很多人)。我试图显示每个地点超过一定年龄的人数,但有些省份没有超过特定年龄的人,因此不会在结果表格中显示。如果没有人超过一定年龄,我希望计数显示为零。 我有:
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子句正在消除零计数结果,但我无法弄清楚我需要的子查询。
答案 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;
注意到我将表别名更改为表名的缩写。这使查询更容易理解。