首页 > 数据库技术 > 详细

SQLSERVER 行转列

时间:2021-08-17 20:50:32      阅读:19      评论:0      收藏:0      [点我收藏+]
WITH    data
          AS ( SELECT   语文 subject_name ,
                        90 score ,
                        张三 student_name ,
                        一班 class_name
               UNION ALL
               SELECT   数学 subject_name ,
                        92 score ,
                        张三 student_name ,
                        一班 class_name
               UNION ALL
               SELECT   英语 subject_name ,
                        93 score ,
                        张三 student_name ,
                        一班 class_name
               UNION ALL
               SELECT   语文 subject_name ,
                        89 score ,
                        张三1 student_name ,
                        一班 class_name
               UNION ALL
               SELECT   数学 subject_name ,
                        82 score ,
                        张三1 student_name ,
                        一班 class_name
               UNION ALL
               SELECT   英语 subject_name ,
                        81 score ,
                        张三1 student_name ,
                        一班 class_name
               UNION ALL
               SELECT   英语 subject_name ,
                        91 score ,
                        张三1 student_name ,
                        一班 class_name
             )
    SELECT  *
    FROM    data PIVOT( MAX(score) FOR subject_name IN ( [语文], [数学], [英语] ) ) t;

1,关键函数PIVOT

2,subject_name IN ( [语文], [数学], [英语] )  把行subject_name值在 语文 数学 英语 里的数据转换成列

3,MAX(score)  取最大分数值作为列的值,除开subject_name和score列的其他列分组组合成行数据

查询结果:

技术分享图片

 

SQLSERVER 行转列

原文:https://www.cnblogs.com/YoungHeart/p/15153484.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!