数据库中数据列转行并均分显示[MSSQL防范]
本文“数据库中数据列转行并均分显示[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
[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
以上是“数据库中数据列转行并均分显示[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |