1、行转列:
表结构和数据:
DROP TABLE IF EXISTS `kj`; CREATE TABLE `kj` ( `姓名` ) DEFAULT NULL, `课程` ) DEFAULT NULL, `分数` ) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; '); '); '); '); '); ');
SELECT 姓名, sum( CASE 课程 WHEN '语文' THEN 分数 ELSE END ) 语文, sum( CASE 课程 WHEN '数学' THEN 分数 ELSE END ) 数学, sum( CASE 课程 WHEN '化学' THEN 分数 ELSE END ) 化学 FROM kj GROUP BY 姓名;
2、列转行
表结构和数据:
DROP TABLE IF EXISTS `fs`; CREATE TABLE `fs` ( `姓名` ) DEFAULT NULL, `语文` ) DEFAULT NULL, `化学` ) DEFAULT NULL, `数学` ) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8; '); ');
SELECT 姓名,语文 as 课程 from fs UNION ALL SELECT 姓名,化学 as 课程 from fs UNION SELECT 姓名,数学 as 课程 from fs