DROP TABLE IF EXISTS `tb`;
CREATE TABLE `tb` (
`id` varchar(12) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,
`name` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL ,
`pro` 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
;
BEGIN;
INSERT INTO `tb` VALUES ('1', '张三', '语文', '74'), ('2', '张三', '数学', '83'), ('4', '张三', '物理', '93'), ('5', '李四', '语文', '74'), ('6', '李四', '数学', '84'), ('8', '李四', '物理', '94');
COMMIT;
SELECT name ,
MAX(CASE pro WHEN '语文' THEN score ELSE 0 END ) 语文,
MAX(CASE pro WHEN '数学' THEN score ELSE 0 END ) 数学,
MAX(CASE pro WHEN '物理' THEN score ELSE 0 END ) 物理
FROM tb
GROUP BY name;
