想要从MySQL表创建比较矩阵

时间:2012-09-28 07:32:01

标签: php mysql

任何人都可以帮助我从mySQL表创建比较矩阵。
我有下表。

MRP | Brand | USAGE
10 | ABC | 200 MB
10 | XYZ | 300 MB
20 | ABC | 500 MB
30 | XYZ | 600 MB


我想要一个给出以下结果的查询。

MRP | ABC | XYZ
10 | 200 MB | 300 MB
20 | 500 MB |-----------
30 | -----------| 600 MB

我能用PHP实现吗? 谢谢和问候。

3 个答案:

答案 0 :(得分:1)

尝试,

SELECT  MRP,
        MAX(CASE WHEN BRAND = 'ABC' THEN `USAGE` ELSE NULL END) 'ABC',
        MAX(CASE WHEN BRAND = 'XYZ' THEN `USAGE` ELSE NULL END) 'XYZ'
FROM tableName
GROUP BY MRP

SQLFiddle Demo

答案 1 :(得分:1)

您需要所谓的数据透视表。

类似的东西:

SELECT MRP,
    MAX(IF(Brand='ABC', USAGE,0)) as 'ABC',
    MAX(IF(Brand='XYZ', USAGE,0)) as 'XYZ'
FROM table
GROUP BY MRP;

有关详细信息,请参阅此文章: http://www.artfulsoftware.com/infotree/queries.php#78

答案 2 :(得分:1)

尝试GROUP_CONCAT函数,使用CASE语句实现此功能,如下所示:

SELECT MRP
     ,GROUP_CONCAT(CASE Brand WHEN 'ABC' THEN `USAGE` ELSE NULL END) AS ABC
     ,GROUP_CONCAT(CASE Brand WHEN 'XYZ' THEN `USAGE` ELSE NULL END) AS XYZ
FROM myTable GROUP BY MRP;

See this SQLFiddle