Sql的行列(纵横表)转换

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  
上一篇:ElasticStack系列之十六 & ElasticSearch5.x index/create 和 update 源码分析


下一篇:《理解 ES6》阅读整理:函数(Functions)(三)Function Constructor & Spread Operator