1、行转列:
表结构和数据:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 DROP TABLE IF EXISTS `kj`; 2 CREATE TABLE `kj` ( 3 `姓名` varchar(50) DEFAULT NULL, 4 `课程` varchar(255) DEFAULT NULL, 5 `分数` varchar(255) DEFAULT NULL 6 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 7 8 9 INSERT INTO `kj` VALUES ('张三', '语文', '98'); 10 INSERT INTO `kj` VALUES ('张三', '数学', '96'); 11 INSERT INTO `kj` VALUES ('张三', '英语', '99'); 12 INSERT INTO `kj` VALUES ('李四', '语文', '92'); 13 INSERT INTO `kj` VALUES ('李四', '数学', '97'); 14 INSERT INTO `kj` VALUES ('李四', '化学', '99');
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 SELECT 2 姓名, 3 sum( 4 CASE 课程 5 WHEN '语文' THEN 6 分数 7 ELSE 8 0 9 END 10 ) 语文, 11 sum( 12 CASE 课程 13 WHEN '数学' THEN 14 分数 15 ELSE 16 0 17 END 18 ) 数学, 19 sum( 20 CASE 课程 21 WHEN '化学' THEN 22 分数 23 ELSE 24 0 25 END 26 ) 化学 27 FROM 28 kj 29 GROUP BY 30 姓名;
2、列转行
表结构和数据:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 DROP TABLE IF EXISTS `fs`; 2 CREATE TABLE `fs` ( 3 `姓名` varchar(255) DEFAULT NULL, 4 `语文` varchar(255) DEFAULT NULL, 5 `化学` varchar(255) DEFAULT NULL, 6 `数学` varchar(255) DEFAULT NULL 7 ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 8 9 INSERT INTO `fs` VALUES ('张三', '98', '96', '0'); 10 INSERT INTO `fs` VALUES ('李四', '92', '97', '99');
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 SELECT 姓名,语文 as 课程 from fs UNION ALL SELECT 姓名,化学 as 课程 from fs UNION SELECT 姓名,数学 as 课程 from fs