2014-03-25 36 views
0

對不起,如果我問這個愚蠢的問題,因爲它困惑我如何做幾天。如何從MYSQL中的行創建水平列?

我有一張名爲Grades的MySQL表。 enter image description here

現在,我想要做的就是做出這樣的輸出。 enter image description here

是否有SQL可以這樣做?提前謝謝你。

+0

可能重複的[MYSQL - Rows到列](http://stackoverflow.com/questions/1241178/mysql-rows-to-columns) –

+0

另請參閱我的答案[MySQL動態交叉選項卡](http://stackoverflow.com/questions/8977855/mysql -dynamic-cross-tab) –

回答

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 
+0

非常感謝Drapp的幫助......這個SQL語句有效。我很感激你。 –