mysql實現行轉列功能

實現從圖一轉行成圖二的功能:sql

圖一:測試

圖二:spa

建表語句:code

CREATE TABLE `t_user_score` (
`id`  int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵' ,
`cname`  varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`cource`  varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`score`  int(11) NULL DEFAULT NULL ,
PRIMARY KEY (`id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
;

插入測試數據:blog

 

INSERT INTO `coco_test`.`t_user_score` ( `cname`, `cource`, `score`) VALUES ( '小許', '語文', '90');
INSERT INTO `coco_test`.`t_user_score` ( `cname`, `cource`, `score`) VALUES ( '小許', '數學', '99');
INSERT INTO `coco_test`.`t_user_score` ( `cname`, `cource`, `score`) VALUES ( '小許', '英語', '88');
INSERT INTO `coco_test`.`t_user_score` ( `cname`, `cource`, `score`) VALUES ( '小張', '語文', '87');
INSERT INTO `coco_test`.`t_user_score` ( `cname`, `cource`, `score`) VALUES ( '小張', '數學', '93');
INSERT INTO `coco_test`.`t_user_score` ( `cname`, `cource`, `score`) VALUES ( '小張', '英語', '78');

 

實現sql:ci

-- 行轉列
SELECT cname ,
    MAX(CASE cource WHEN '數學' THEN score ELSE 0 END ) 數學,
    MAX(CASE cource WHEN '語文' THEN score ELSE 0 END ) 語文,
    MAX(CASE cource WHEN '英語' THEN score ELSE 0 END ) 英語
FROM t_user_score
GROUP BY cname;
相關文章
相關標籤/搜索