Jslfl

星河码客,月下程序猿,乱七八糟的笔记

mysql行列转换实例

数据表:row_to_col,数据如下

scode | sval
--------------
up    |  2
down  |  3
left  |  4
right | 偏向右面

scode是主键,现希望得到的查询结果为:

up  |  down  |  left  |  right
-------------------------------
2   |   3    |   4    |  偏向右面

查询语句为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
SELECT
    MAX(t.vup) AS vup,
    MAX(t.vdown) AS vdown,
    MAX(t.vleft) AS vleft,
    MAX(t.vright) AS vright
FROM(
    SELECT
        IF(scode = 'up',sval,'') AS vup,
        IF(scode = 'down',sval,'') AS vdown,
        IF(scode = 'left',sval,'') AS vleft,
        IF(scode = 'right',sval,'') AS vright
    FROM row_to_col
    GROUP BY scode
) t

结果如下

vup  |  vdown  |  vleft  |  vright
-------------------------------------
2    |   3     |   4     |  偏向右面

因为sval值中有字符串,所以用max函数(用sum的话,字符串值会等于0)

其它使用参考http://www.jslfl.cn/?p=201

Comments are currently closed.