資料格式為
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 現在要求列出每個學生所有課程的成績.這就...