sqlserver如何将多列转为一列

源码驿站 其他问答 1

表数据:

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

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

回复

共1条回复 我来回复
  • 毕设客栈
    这个人很懒,什么都没有留下~
    评论

    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 */

    0条评论

发表回复

登录后才能评论