如何在MYSQL中从行创建水平列?

时间:2014-03-25 03:07:38

标签: mysql sql pivot-table

很抱歉,如果我问这个愚蠢的问题,因为它困扰我几天如何做这件事。

我在MySQL中有一个名为Grades的表。 enter image description here

现在,我想做的就是制作像这样的输出。 enter image description here

是否有SQL这样做?非常感谢你。

1 个答案:

答案 0 :(得分:0)

您可以通过学生和班级申请案例/时间和分组。如果你只想要一个人,只需申请一个where子句......或者即使你想让所有学生上课,或者给定学年......等等。

SELECT
      g.studNumber,
      g.subjCode,
      MAX( case when g.period = 1 then g.grade else 0 end ) as 1st_period,
      MAX( case when g.period = 2 then g.grade else 0 end ) as 2nd_period,
      MAX( case when g.period = 3 then g.grade else 0 end ) as 3rd_period,
      MAX( case when g.period = 4 then g.grade else 0 end ) as 4th_period,
      AVG( g.grade ) as Ave
   from
      Grades g
   group by 
      g.studNumber,
      g.subjCode