数据库中数据列转行并均分显示

2014-11-24 08:31:08 来源: 作者: 浏览: 2

[sql]
declare @t table(网元 varchar(20),覆盖类型 varchar(20),占比 float, 排名 int)
insert into @t(网元,覆盖类型,占比,排名)
select '分公司1','军队',0.45,1
union all
select '分公司1','政府',0.22,2
union all
select '分公司1','学校',0.12,3
union all
select '分公司2','社区',0.33,1
union all
select '分公司2','银行',0.22,2
union all
select '分公司2','医院',0.13,3
select * from @t
(6 行受影响)
网元 覆盖类型 占比 排名
-------------------- -------------------- ---------------------- -----------
分公司1 军队 0.45 1
分公司1 政府 0.22 2
分公司1 学校 0.12 3
分公司2 社区 0.33 1
分公司2 银行 0.22 2
分公司2 医院 0.13 3
(6 行受影响)
[sql]
  
 
[sql]
希望效果如下:  
 


[sql]
select 网元,  
 

[第一名]=max(case when 排名%6=1 then 覆盖类型 else '' end),
[第一名占比]=sum(case when 排名%6=1 then 占比 else 0 end),
[第二名]=max(case when 排名%6=2 then 覆盖类型 else '' end),
[第二名占比]=sum(case when 排名%6=2 then 占比 else 0 end),
[第三名]=max(case when 排名%6=3 then 覆盖类型 else '' end),
[第三名占比]=sum(case when 排名%6=3 then 占比 else 0 end),
[第四名]=max(case when 排名%6=4 then 覆盖类型 else '' end),
[第四名占比]=sum(case when 排名%6=4 then 占比 else 0 end),
[第五名]=max(case when 排名%6=5 then 覆盖类型 else '' end),
[第五名占比]=sum(case when 排名%6=5 then 占比 else 0 end),
[第六名]=max(case when 排名%6=0 then 覆盖类型 else '' end),
[第六名占比]=sum(case when 排名%6=0 then 占比 else 0 end)
from @t
group by 网元
作者 zlp321002
-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: