MySQL动态数据透视表

时间:2015-08-19 14:55:12

标签: mysql pivot-table

我已将数据简化为类似以下内容:

+---------+-----+--------+
| item  | type  | color  |
+-------+-------+--------+
|   1   |   A   | red    |
|   1   |   B   | blue   |
|   2   |   A   | orange |
|   2   |   B   | pink   |
|   2   |   C   | blue   |
|   3   |   B   | yellow |
+---------+-----+--------+

'类型'每个项目都是可变的,因此,我需要一个动态的MySQL数据透视解决方案,可以处理任意数量的类型。以下是我需要从MySQL查询返回的结果集类型。如您所见,我不需要进行汇总计算。

+---------+------+--------+--------+
| item  |   A    |   B    |   C    |
+-------+--------+--------+--------+
|   1   | red    | blue   |        | 
|   2   | orange | pink   | blue   |
|   3   |        | yellow |        |
+-------+--------+--------+--------+

我怀疑解决方案可能涉及使用MySQL程序?

2 个答案:

答案 0 :(得分:0)

select item, min(A), min(B), min(C) from (
    select item, 
        case when type = 'A' then color end as 'A',
        case when type = 'B' then color end as 'B',
        case when type = 'C' then color end as 'C'
    from color
) as tbl
group by item

答案 1 :(得分:0)

你正在“转动”。在my blog中,我提供了一个通用存储过程来为您生成SELECT语句。