Mysql 行轉列 列轉行

2021-08-19 05:35:51 字數 2034 閱讀 2205

create

table

`test_tb_grade` (

`id`

int(10) not

null auto_increment,

`user_name`

varchar(20) default

null,

`course`

varchar(20) default

null,

`score`

float

default

'0',

primary

key (`id`)

) engine=innodb auto_increment=1

default charset=utf8;

insert

into test_tb_grade(user_name, course, score) values

("張三", "數學", 34),

("張三", "語文", 58),

("張三", "英語", 58),

("李四", "數學", 45),

("李四", "語文", 87),

("李四", "英語", 45),

("王五", "數學", 76),

("王五", "語文", 34),

("王五", "英語", 89);

select user_name ,

max(case course when

'數學'

then score else

0end ) 數學,

max(case course when

'語文'

then score else

0end ) 語文,

max(case course when

'英語'

then score else

0end ) 英語

from test_tb_grade

group

by user_name;

create

table

`test_tb_grade2` (

`id`

int(10) not

null auto_increment,

`user_name`

varchar(20) default

null,

`cn_score`

float

default

null,

`math_score`

float

default

null,

`en_score`

float

default

'0',

primary

key (`id`)

) engine=innodb auto_increment=1

default charset=utf8;

insert

into test_tb_grade2(user_name, cn_score, math_score, en_score) values

("張三", 34, 58, 58),

("李四", 45, 87, 45),

("王五", 76, 34, 89);

select user_name, '語文' course , cn_score as score from test_tb_grade2

union

select user_name, '數學' course, math_score as score from test_tb_grade2

union

select user_name, '英語' course, en_score as score from test_tb_grade2

order

by user_name,course;

MySQL行轉列 列轉行

max case course when 數學 then score else 0 end 數學,max case course when 語文 then score else 0 end 語文,max case course when 英語 then score else 0 end 英語 fro...

MySQL 行轉列 列轉行

以下內容包括 行轉列 sql 執行效果展示 列轉行 sql 執行效果展示 總結 附上的建表語句 一 行轉列 廢話不多說,先上sql 兩種方式 行轉列 方法 select id,name,group concat case when subject 語文 then score end separato...

mysql列邊行 mysql 行轉列 列轉行

group concat 函式說明 手冊上說明 該函式返回帶有來自乙個組的連線的非null值的字串結果 通俗點理解,其實是這樣的 group concat 會計算哪些行屬於同一組,將屬於同一組的列顯示出來。要返回哪些列,由函式引數 就是欄位名 決定。分組必須有個標準,就是根據group by指定的列...