MySQL知識要點9 行轉列

2021-09-11 06:12:58 字數 1964 閱讀 1443

資料格式為

name

cource

score

張三語文

64張三

數學75

張三外語

92李四

語文85

李四數學

88李四

外語63

王五語文

76王五

數學94

王五外語

58建立資料表,插入資料

create table stuent(

name varchar(

100) primary key,

cource varchar(

100)

, score int);

insert into student(name,cource,score)values(

'張三'

,'語文',64

);insert into student(name,cource,score)values(

'張三'

,'數學',75

);insert into student(name,cource,score)values(

'張三'

,'外語',92

);insert into student(name,cource,score)values(

'李四'

,'語文',85

);insert into student(name,cource,score)values(

'李四'

,'數學',88

);insert into student(name,cource,score)values(

'李四'

,'外語',63

);insert into student(name,cource,score)values(

'王五'

,'語文',76

);insert into student(name,cource,score)values(

'王五'

,'數學',94

);insert into student(name,cource,score)values(

'王五'

,'外語',58

);

想要實現的結果為

姓名語文

數學外語

張三64

7592

李四85

8863

王五76

9458

其中sum可以替換成其他的聚合函式,例如max等

select 

name as

'姓名'

,sum(if

(cource=

'語文'

,score,0)

)as'語文'

,sum(if

(cource=

'數學'

,score,0)

)as'數學'

,sum(if

(cource=

'外語'

,score,0)

)as'外語'

from student

group by name;

select

name as

'姓名'

,sum

(case cource when '語文' then score else

0 end)

as'語文'

,sum

(case cource when '數學' then score else

0 end)

as'數學'

,sum

(case when cource =

'英語' then score else

0 end)

as'英語'

from student

group by name;

mysql 動態行轉列 MySQL行轉列

比如乙個單子,多個收據單用逗號隔開,怎麼把這乙個單子所有收據單獨展示出來,行轉成列呢?方法一 這裡需要用到迴圈,首先建立乙個1 10的序列 select rownum rownum 1 as seq from select rownum 0 r,bills limit 0,10 其次依次運用 sub...

mysql行轉列 subs mysql 行轉列

存在表score,記錄學生的考試成績,如下圖所示 現要求以 學生姓名,語文,數學,英語 這種格式顯示學生成績,如下圖所示 具體步驟如下 1 首先,使用case when函式輸出單個課程的成績 case when course 語文 then score end as 語文 case when cou...

mysql行轉列怎麼用 mysql錶行轉列的用法

現在有一張score表,儲存學生每門課的成績,結構資料如下 idnamesubjectscore 1張三 語文90 2張三 數學88 3張三 外語75 4李四 語文99 5李四 數學70 6李四 外語95 7李五 語文88 8李五 數學85 9李五 外語90 現在要求列出每個學生所有課程的成績.這就...