行列都是动态数据的统计问题?大虾请进..

xiaoyuehen 2003-08-25 02:25:38
A表结构如下:

店名 地区 级别
d1 北京 级别1
d2 北京 级别2
d3 天津 级别2
d4 河肥 级别3
d5 杭州 级别4
d6 杭州 级别3

想得到如下的结果:

地区 级别1的店数 级别2的店数 级别3的店数 级别4的店数 合计
北京 1 1 0 0 2
杭州 0 0 1 1 2
河肥 0 0 1 0 1
天津 0 1 0 0 1
合计 1 2 2 1 6

如果列是固定的,我还可以做(case一个一个列出来)...但是现在是固定的,也就是说有可能级别有5,6,7....这样就要把所有的级别列出来,而不是从中选几个显示出来,怎么写SQL语句?
...全文
53 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoyuehen 2003-08-25
  • 打赏
  • 举报
回复
高手一出手,便知有没有,果然!

问题解决!!给分...:)
liuyun2003 2003-08-25
  • 打赏
  • 举报
回复
学习
pengdali 2003-08-25
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql = 'select 地区'
select @sql = @sql + ',sum(case 级别 when '''+cast(级别 as varchar(10))+''' then 1 else 0 end) as ['+cast(级别 as varchar(10))+'的店数]'
from (select distinct 级别 from A表) as a
select @sql = @sql+' from A表 group by 地区'

exec(@sql)
go
pengdali 2003-08-25
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql = 'select 地区'
select @sql = @sql + ',sum(case 级别 when '''+cast(级别 as varchar(10))+''' then 1 else 0 end) as ['+cast(级别 as varchar(10))+'的店数]'
from (select distinct 级别 from 有一表) as a
select @sql = @sql+' from 有一表 group by 地区'

exec(@sql)
go

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧