繁体   English   中英

如何显示没有计数聚合结果的行?

[英]How to display rows with no count aggregate result?

我有一张表,其中包含 Job、City 和 PersonName (在该城市工作) 即使没有人在那个城市工作,我也想返回所有工作和城市。 这是一个简单的例子:

表的创建:

CREATE TABLE #Data
(
    Job varchar(50),
    City varchar(50),
    PersonName varchar(50)
)

INSERT INTO #Data
VALUES 
    ('Teacher', 'New-York', 'John')
    ,('Teacher', 'Los-Angeles', 'Mary')
    ,('Fireman', 'New-York', 'Sam')

我的查询

SELECT 
    [Job]
    , [City]
    ,COUNT(PersonName) AS NumberOfPeopleWorkingThere
FROM #Data 
GROUP BY [Job], [City]
ORDER BY [Job], [City]

我的结果

Fireman    New-York      1
Teacher    Los-Angeles   1
Teacher    New-York      1

但我想拥有:

Fireman    Los-Angeles   0    -> this row in addition
Fireman    New-York      1
Teacher    Los-Angeles   1
Teacher    New-York      1

我不知道如何做到这一点,你能帮我吗?

这回答了问题的原始版本。

使用cross join生成行,然后left join

SELECT j.job, c.city,
       COUNT(PersonName) AS NumberOfPeopleWorkingThere
FROM (SELECT DISTINCT job FROM #Data) j CROSS JOIN
     (SELECT DISTINCT city FROM #Data) c LEFT JOIN
     #Data d
     ON d.job = j.job AND d.city = c.city
GROUP BY j.job, c.city
ORDER BY j.job, c.city;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM