转载

Mysql实现行列转换

前言:

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

自己举了个小例子:

Mysql实现行列转换

sql 代码实现:

 1 -- Step1:建表并插入数据  2   3 -- Step2:中间转换,即“二维转一维”得到一维表。  4   5 -- Step3:利用IF判断并“group by”即可得到目标结果表。  6   7    8   9 -- 加载 10  11 use test; 12  13 create table score ( 14  15 name varchar(11), 16  17 Math int, 18  19 English int 20  21 ); 22  23 insert into score values('',89,78); 24  25 insert into score values('',77,81); 26  27 insert into score values('',87,98); 28  29   30  31 -- 查询生成目标表 32  33 SELECT 34  35 c2 AS '课程', 36  37 SUM(IF(c1='',c3,0)) AS '', 38  39 SUM(IF(c1='',c3,0)) AS '', 40  41 SUM(IF(c1='',c3,0)) AS '' from( 42  43 select name as c1,'Math' as c2,Math as c3 from score group by name 44  45 Union  46  47 select name,'English' as c2,English from score group  by name 48  49 ) AS tx group by c2; 50  51   52 

结语:

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

正文到此结束
Loading...