【发布时间】:2017-09-21 17:36:16
【问题描述】:
假设我有这 3 张桌子
Countries ProvOrStates MajorCities
-----+------------- -----+----------- -----+-------------
Id | CountryName Id | CId | Name Id | POSId | Name
-----+------------- -----+----------- -----+-------------
1 | USA 1 | 1 | NY 1 | 1 | NYC
你如何得到类似的东西
---------------------------------------------
CountryName | ProvinceOrState | MajorCities
| (Count) | (Count)
---------------------------------------------
USA | 50 | 200
---------------------------------------------
Canada | 10 | 57
到目前为止,我的看法:
- 在Countries JOIN ProvOrStates上运行第一个SELECT COUNT(GROUP BY Country.Id),李>
- 将结果存储在表变量中,
- 在 ProvOrStates JOIN MajorCities 上运行第二个 SELECT COUNT (GROUP BY Country.Id),李>
- 根据 Country.Id 更新表变量
- 将表变量与 Country 表连接起来 ON countries.Id = 表变量的 Id。
是否有可能只运行一个查询而不是多个中间查询?我不知道这是否可行,因为我尝试过但没有运气。
感谢您的帮助
【问题讨论】:
-
将它们全部加入并选择 COUNTRY、COUNT(DISTINCT PROVINCE)、COUNT(DISTINCT CITY) GROUP BY COUNTRY
-
您的解决方案有效。谢谢
标签: tsql