行转列

行转列


 (1) 建表:


CREATE TABLE `student` (

  `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=10 DEFAULT CHARSET=utf8;


 




 (2) 新增数据:


insert into student(`user_name`,`course`,`score`)  values

("张三", "数学", 34),

("张三", "语文", 58),

("张三", "英语", 61),

("李四", "数学", 45),

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

("李四", "英语", 64),

("王五", "数学", 76),

("王五", "语文", 51),

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




 (3) 行转列 :


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

FROM student

GROUP BY user_name;




关键词 :  行转列