我有两个表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)
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)
检查哪个查询更快.
| 归档时间: |
|
| 查看次数: |
3489 次 |
| 最近记录: |