sqlserver如何将多列转为一列
表数据:
学生 语文 数学 … 张三 30 80 李四 20 60 王五 60 90
希望效果: 学生 分数 张三 30 张三 80 李四 20 李四 60 王五 60 王五 90
-
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 */
发表回复