MySQL的行列轉換

2021-07-16 02:38:25 字數 2270 閱讀 5277

mysql的行列轉換的寫法, 如果有需要可以參考下

現在如下有兩個表:

成績表(t_score) id

subjectid

score11

952285

33904

48855

986689

77908

88899

87 科目表(t_subject) id

subject1語文

2數學3英語

4物理5化學

6生物7政治

8歷史9地理

想要轉成如下的表:

id語文

數學英語

物理化學

生物政治

歷史地理195

8590

8898

8990

8887

中間**

select 

concat(" sum(case when j.`subject`='",`subject`,

"' then s.score end) as '",`subject`,

"',") as tempcode

from t_subject

查詢結果

tempcode

sum(case when j.subject=』語文』 then s.score end) as 『語文』,

sum(case when j.subject=』數學』 then s.score end) as 『數學』,

sum(case when j.subject=』英語』 then s.score end) as 『英語』,

sum(case when j.subject=』物理』 then s.score end) as 『物理』,

sum(case when j.subject=』化學』 then s.score end) as 『化學』,

sum(case when j.subject=』生物』 then s.score end) as 『生物』,

sum(case when j.subject=』政治』 then s.score end) as 『政治』,

sum(case when j.subject=』歷史』 then s.score end) as 『歷史』,

sum(case when j.subject=』地理』 then s.score end) as 『地理』,

最終轉換**

select s.`id`,

sum(case

when j.`subject`='語文'

then s.score end) as

'語文',

sum(case

when j.`subject`='數學'

then s.score end) as

'數學',

sum(case

when j.`subject`='英語'

then s.score end) as

'英語',

sum(case

when j.`subject`='物理'

then s.score end) as

'物理',

sum(case

when j.`subject`='化學'

then s.score end) as

'化學',

sum(case

when j.`subject`='生物'

then s.score end) as

'生物',

sum(case

when j.`subject`='政治'

then s.score end) as

'政治',

sum(case

when j.`subject`='歷史'

then s.score end) as

'歷史',

sum(case

when j.`subject`='地理'

then s.score end) as

'地理'

from t_score s inner

join t_subject j on s.subjectid=j.`id`

查詢結果就是上面的結果, 就不再貼出了.

mysql行列轉換 mysql行列轉換

1.一維轉二維 上圖為成績表中資料,現希望將資料轉換為下圖。靜態 轉化為二維表後的列名及列數是確定不變的,本例中即course只有數學 語文 英語這三門課。select s name,max if course 數學 score,0 as 數學,max if course 語文 score,0 as...

mysql行列轉換例子 mysql行列轉換示例

現把轉換方法列舉如下 1 縱表轉橫表 縱表結構 tablea name course grade 張三語文 張三數學 張三英語 李四語文 李四數學 橫表結構 tableb name 語文數學 英語張三 李四方法一 select name,sum case course when 語文 then gr...

MySQL 行列轉換

最近在慕課上 看mysql教程 裡面關於行轉列的教程不錯 貼上練習sql 做個記錄 簡單行轉列 select a.user name,sum b.kills from user1 a join user kills b on a.id b.user id group by user name cro...