首页 > 解决方案 > 如何在sql中没有ddl的情况下将城市分组为一个值

问题描述

我需要按国家/地区对输出进行分组。

我想在每个区域获得订阅者。但我不知道如何划分这两组并计算那些有代码的组。

注意:不应使用 DDL 命令。


表:城市和订阅者

表格内容


 ** select cities.city_name,count(number) as num
  FROM [tempdb].[dbo].[cities] as cities
  LEFT JOIN [tempdb].[dbo].[subscribers] as subscribers
  on cities.city_code=subscribers.city_code
  group by cities.city_name**

标签: sql

解决方案


您真的应该将该区域添加到cities表中。如果没有,您可以在查询中引入它。一种方法是创建包含城市和地区的派生表:

select v.region, count(s.number) as num
from [tempdb].[dbo].[cities] c join
     (values (1, 'Central'),
             (2, 'South'),   -- "Eilat" appears to be 2
             . . .
     ) v(city_code, region)
     on v.city_code = c.city_code left join
     [tempdb].[dbo].[subscribers] s
     on c.city_code = s.city_code
group by v.region

推荐阅读