关闭

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

标签: 数据库insertfloattable
1033人阅读 评论(1) 收藏 举报
分类:
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 行受影响)
希望效果如下:



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 网元






   
1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:350116次
    • 积分:4566
    • 等级:
    • 排名:第6396名
    • 原创:104篇
    • 转载:2篇
    • 译文:2篇
    • 评论:103条
    最新评论
    朋友网站链接