首页 新闻 会员 周边 捐助

sqlserver如何将多列转为一列

0
悬赏园豆:10 [已解决问题] 解决于 2020-03-16 10:26

表数据:

学生 语文 数学 ...
张三 30 80
李四 20 60
王五 60 90

希望效果:
学生 分数
张三 30
张三 80
李四 20
李四 60
王五 60
王五 90

小青跟您拼了的主页 小青跟您拼了 | 初学一级 | 园豆:5
提问于:2020-03-12 13:52
< >
分享
最佳答案
0

Create table Students
(student NVARCHAR(20),
Chn NVARCHAR(4) ,Math NVARCHAR(4))
;
insert into Students
select '张三', 30 , 80
union all
select '李四', 20 , 60
union all
select '王五' , 60 , 90
;

select * from students;

/*
student Chn Math
张三 30 80
李四 20 60
王五 60 90
*/

SELECT student,成绩,科目
FROM Students
UNPIVOT(成绩 FOR 科目 IN (Chn,Math) ) p;

/*
student 成绩 科目
张三 30 Chn
张三 80 Math
李四 20 Chn
李四 60 Math
王五 60 Chn
王五 90 Math
*/

select student,成绩 from
(
SELECT student,成绩,科目
FROM Students
UNPIVOT(成绩 FOR 科目 IN (Chn,Math) ) p
)t

/*
student 成绩
张三 30
张三 80
李四 20
李四 60
王五 60
王五 90
*/

https://www.cnblogs.com/downmoon/archive/2012/04/05/2433571.html

收获园豆:5
邀月 | 高人七级 |园豆:25475 | 2020-03-13 22:56
其他回答(2)
0

select [学生],[语文] from [成绩表]
union all
select [学生],[数学] from [成绩表]

收获园豆:1
青春猪头少年 | 园豆:205 (菜鸟二级) | 2020-03-12 16:56

谢谢,这种有点麻烦,假如有很多列就需要写很多遍。

支持(0) 反对(0) 小青跟您拼了 | 园豆:5 (初学一级) | 2020-03-16 10:26
0
收获园豆:4
wengle | 园豆:567 (小虾三级) | 2020-03-12 20:00
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册