Mysql实现行列转换

jopen 4年前

 

前言:

最近又玩起了sql 语句,想着想着便给自己出了一道题目:“行列转换”。起初瞎折腾了不少时间也上网参考了一些博文,不过大多数是采用 oracle 数据库当中的一些便捷函数进行处理,比如 ”pivot”。那么,在 Mysql 环境下如何处理?

自己举了个小例子:

Mysql实现行列转换

sql 代码实现:

-- Step1:建表并插入数据    -- Step2:中间转换,即“二维转一维”得到一维表。    -- Step3:利用IF判断并“group by”即可得到目标结果表。         -- 加载    use test;    create table score (    name varchar(11),    Math int,    English int    );    insert into score values('甲',89,78);    insert into score values('乙',77,81);    insert into score values('丙',87,98);         -- 查询生成目标表    SELECT    c2 AS '课程',    SUM(IF(c1='甲',c3,0)) AS '甲',    SUM(IF(c1='乙',c3,0)) AS '乙',    SUM(IF(c1='丙',c3,0)) AS '丙' from(    select name as c1,'Math' as c2,Math as c3 from score group by name    Union     select name,'English' as c2,English from score group  by name    ) AS tx group by c2;

结语:

   目前为止,个人尚未发现Mysql当中存在可以便捷将表格行列快速转换的函数。以上只是个人的一点小尝试,欢迎有更好解法的朋友批评指正!