首页 > 代码库 > 列转行且行转列
列转行且行转列
原数据格式如下:
这是学生的成绩表,每科为一列,要求转换为下面的格式:
即,把把课程列转换为行,把学生行转换为列:
建表:
create table #a
(name varchar(20),english int,chinese int ,math int)
insert into #a values( ‘zhangsan‘,10,39,40)
insert into #a values( ‘lisi‘,16,25,36)
思路:先把列转换为行:
select name,km,score
from
(select name,english,chinese,math
from #a) a
UNPIVOT
(score for km in
(english,chinese,math )
)
as unpvt
如下数据:
然后把行name转换为列:
select *
from
(
select name,km,score from
(select name,km,score from (select name,english,chinese,math from #a) a UNPIVOT (score for km in (english,chinese,math ) ) as unpvt) a
) a
PIVOT
(max(score) for name in (zhangsan,lisi))
as unpvt
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。