将count连接为sql查询中的列

tec*_*ora 1 sql sql-server

我有两个表Business和BusinessCat.我需要一个MSSQL查询,它将获得以下结果:

ID | CategoryName | RecordCount
1  | Local        | 3
2  | National     | 1
3  | International| 2
4  | Other        | 0
Run Code Online (Sandbox Code Playgroud)

我需要计算每个类别中有多少作为另一列.

业务表看起来像这样:

ID | Category | BusinessName
1  | 3        | Blackstone, Inc.
2  | 2        | Pet Smart
3  | 1        | John Doe
4  | 3        | Best Buy
5  | 1        | Sams Treats
6  | 1        | Eastcoast Tattoo
Run Code Online (Sandbox Code Playgroud)

BusinessCat表如下所示:

ID | CategoryName
1  | Local
2  | National
3  | International
4  | Other
Run Code Online (Sandbox Code Playgroud)

Szy*_*mon 5

SELECT CN.ID, CN.CategoryName, ISNULL(Count(B.ID), 0) AS RecordCount
FROM Business B
RIGHT JOIN BusinessCat CN
ON B.Category = CN.ID
GROUP BY CN.ID, CN.CategoryName
Run Code Online (Sandbox Code Playgroud)

要么

SELECT CN.ID, CN.CategoryName,
    (SELECT COUNT(*) FROM Business B WHERE B.Category = CN.ID) AS RecordCount
FROM BusinessCat CN
Run Code Online (Sandbox Code Playgroud)

检查哪个查询更快.