SQL数据行列转换及分组

问题描述:求对一个数据表进行行列转换的语句。

表格数据示例:

姓名 课程 期中分数 期末分数 作业分数

a      语文    80          70          90

a       数学    90         80           90

b       语文      70       80          80

b       数学       90       80            80

结果:

姓名 语文期中分数 语文期末分数 语文作业分数 数学期中分数 数学期末分数 数学作业分数

a          80                 70               90                    90                 80            90

b          70                  80                80                  90                   80           80

郎朗坤
浏览 588回答 2
2回答

神不在的星期二

select  姓名, sum(case 课程 when 语文 then 其中分数 else 0 end) as 语文期中分数, sum(case 课程 when 语文 then 期末分数 else 0 end) as 语文期末分数, sum(case 课程 when 语文 then 作业分数 else 0 end) as 语文作业分数, sum(case 课程 when 数学 then 其中分数 else 0 end) as 数学期中分数, sum(case 课程 when 数学 then 期末分数 else 0 end) as 数学期末分数, sum(case 课程 when 数学 then 作业分数 else 0 end) as 数学作业分数 from  ..... group by 姓名

尚方宝剑之说

如果动态的,写一个存储过程,写个临时表把“课目,姓名”group by 出来后,就容易了。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

SQL Server