前言:
最近又玩起了sql语句,想着想着便给自己出了一道题目:“行列转换”。起初瞎折腾了不少时间也上网参考了一些博文,不过大多数是采用oracle数据库当中的一些便捷函数进行处理,比如”pivot”。那么,在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当中存在可以便捷将表格行列快速转换的函数。以上只是个人的一点小尝试,欢迎有更好解法的朋友批评指正!