2

谁能帮我从 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 实现这一点吗?谢谢并恭祝安康。

4

3 回答 3

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 演示

于 2012-09-28T07:35:23.193 回答
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

于 2012-09-28T07:36:06.490 回答
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;

看到这个 SQLFiddle

于 2012-09-28T07:43:27.267 回答