MySQL行轉列與列轉行

2021-10-06 07:35:55 字數 1382 閱讀 1847

建表、新增資料

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);

行轉列sql:

select user_name ,

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 ) 英語

列轉行sql:

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 行轉列 列轉行

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 pr...

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...