SQL行列转换

  现有一个表结构如下:

     

  此表中的三个字段分别为学生的学号,课程号和成绩,我们通过SQL行列转换,可以让学生的各科成绩在一行显示,效果如下:

     

当某个学生的某门课的成绩不存在是以0代替。

  我们可以用下面的SQL语句来实现:

1 select student_id,
2       max(case course_id when '01' then grade else 0 end) as "chinese",
3       max(case course_id when '02' then grade else 0 end) as "math",
4       max(case course_id when '03' then grade else 0 end) as "english"
5 from score
6 group by student_id;

 

你可能感兴趣的:(行列转换)