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