首页 新闻 会员 周边

SQL数据行列转换及分组

0
悬赏园豆:20 [已解决问题] 解决于 2011-06-09 12:14

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

表格数据示例:

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

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

问题补充:

能否使用PIVOT?

除了常规的CASE外,是否还有更有效的的方法?

隼笛的主页 隼笛 | 初学一级 | 园豆:195
提问于:2011-05-26 19:01
< >
分享
最佳答案
0

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 姓名

收获园豆:20
xmfan | 菜鸟二级 |园豆:225 | 2011-05-26 19:42
虽然没有更好的答案,分还是给你了。
隼笛 | 园豆:195 (初学一级) | 2011-06-09 12:14
其他回答(1)
0

如果动态的,写一个存储过程,写个临时表把“课目,姓名”group by 出来后,就容易了。

黄贵涛 | 园豆:205 (菜鸟二级) | 2011-05-26 22:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册