行转列(case-when-then)

行转列

– 创建学生信息表,完成学生信息分析

– 创建表

CREATE TABLE students_score(`cname` VARCHAR(10),cource VARCHAR(10),score INT)
ENGINE=INNODB; -- 插入数据
INSERT INTO tb VALUES('张三','语文',74);
INSERT INTO tb VALUES('张三','数学',83);
INSERT INTO tb VALUES('张三','物理',93);
INSERT INTO tb VALUES('李四','语文',74);
INSERT INTO tb VALUES('李四','数学',84);
INSERT INTO tb VALUES('李四','物理',94);

原始数据表输出格式如下图。
在这里插入图片描述

SELECT cname 姓名,SUM(CASE cource WHEN '语文' THEN score END )'语文',
SUM(CASE cource WHEN '数学' THEN score END ) '数学',
SUM(CASE cource WHEN '物理' THEN score END )'物理' FROM students_score  GROUP BY cname ;
//第二种写法
SELECT cname 姓名,CASE WHEN cource='语文' THEN cource=score END AS '语文' FROM students_score

猜你喜欢

转载自blog.csdn.net/nayomi927/article/details/114293200