我的sql字符串如下
SELECT Country, City, COUNT(*) AS [Count]
FROM CountriesAndCities
GROUP BY GROUPING SETS ( ( Country, City ), ( Country) )
ORDER BY Country, City
Run Code Online (Sandbox Code Playgroud)
我得到的结果如下
Country City CountryCount
---------- ---------- ------------
France NULL 4
France Paris 4
Spain NULL 6
Spain Barcelona 3
Spain Madrid 3
Run Code Online (Sandbox Code Playgroud)
如果国家只有一个城市记录,我可以使用HAVING获得如下结果
Country City CountryCount
---------- ---------- ------------
France Paris 4
Spain NULL 6
Spain Barcelona 3
Spain Madrid 3
Run Code Online (Sandbox Code Playgroud)
SELECT Country, City, COUNT(*) AS [Count]
FROM CountriesAndCities
GROUP BY GROUPING SETS ( ( Country, City ), ( Country) )
HAVING GROUPING(City) = 0
OR COUNT(DISTINCT City) > 1
ORDER BY Country, City
Run Code Online (Sandbox Code Playgroud)
GROUPING(City) = 0如果City其中一个字段当前正在分组.GROUPING(City) = 1再City被报告为NULL.这意味着我们总是包含City提到的行(不是NULL).
对于其他行,其中GROUPING(City) = 1aka City IS NULL,那么如果City已将多个聚合到结果中,则我们仅包括该行.
| 归档时间: |
|
| 查看次数: |
462 次 |
| 最近记录: |