建表

CREATE TABLE `score` (
    `id` INT(5) NOT NULL AUTO_INCREMENT,
    `name` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
    `obj` VARCHAR(20) NULL DEFAULT NULL COLLATE 'utf8_general_ci',
    `fenshu` INT(10) NULL DEFAULT '0',
    PRIMARY KEY (`id`) USING BTREE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
AUTO_INCREMENT=11
;

插入数据

INSERT INTO `test`.`score` (`name`, `obj`, `fenshu`) VALUES ('李四', '语文', '40');
INSERT INTO `test`.`score` (`name`, `obj`, `fenshu`) VALUES ('李四', '数学', '50');
INSERT INTO `test`.`score` (`name`, `obj`, `fenshu`) VALUES ('李四', '英语', '60');

INSERT INTO `test`.`score` (`name`, `obj`, `fenshu`) VALUES ('张三', '语文', '10');
INSERT INTO `test`.`score` (`name`, `obj`, `fenshu`) VALUES ('张三', '数学', '20');
INSERT INTO `test`.`score` (`name`, `obj`, `fenshu`) VALUES ('张三', '英语', '30');

数据为:

Mysql将学生分数行转列并求和

 

 执行行转列查询:

SELECT NAME,
SUM(case when obj = '语文' then fenshu ELSE 0 END) AS '语文',
SUM(case when obj = '数学' then fenshu ELSE 0 END) AS '数学',
SUM(case when obj = '英语' then fenshu ELSE 0 END) AS '英语',
SUM(fenshu)
FROM score
GROUP BY 
NAME

查询结果为:

Mysql将学生分数行转列并求和

 

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-12-29
  • 2022-01-01
  • 2022-12-23
  • 2021-11-06
猜你喜欢
  • 2022-12-23
  • 2021-06-30
  • 2022-01-22
  • 2021-10-24
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案