2014-01-14 172 views
1

查询表以输出结果如下所示的最有效方法是什么?查询结果取决于来自单独查询的结果

表:

+-----+----------+-----+ 
| PN | date | QTY | 
+-----+----------+-----+ 
| AB1 | 01/12/14 | 4 | 
| AB2 | 01/12/14 | 2 | 
| AB3 | 01/12/14 | 7 | 
| AB1 | 01/22/14 | 8 | 
| AB3 | 01/25/14 | 3 | 
| AB5 | 01/25/14 | 9 | 
+-----+----------+-----+ 

结果:

+-----+----------+----------+----------+ 
|  | 01/12/14 | 01/22/14 | 01/25/14 | 
+-----+----------+----------+----------+ 
| AB1 |  4 |  8 | 0  | 
| AB2 |  2 |  0 | 3  | 
| AB5 |  7 |  0 | 9  | 
+-----+----------+----------+----------+ 
+0

'选择PN,日期,数量从表顺序由PN,date' – 2014-01-14 03:24:55

+1

@Dagon这不会转动的数据,在问题中指出。它会简单地命令结果... –

+0

然后可以简单地在PHP输出中完成 – 2014-01-14 03:36:58

回答

2

你想要做的就是所谓的摆动中的数据是什么。它可以通过一些CASE语句和集合函数在MySQL中实现。

E.G.

SELECT PN, 
    SUM(CASE WHEN date='20141201' THEN qty END) AS day1Qty, 
    SUM(CASE WHEN date='20141202' THEN qty END) AS day2Qty 
FROM table 
GROUP BY PN 

当然,你可能会希望做一些事情来动态处理正在聚合的日期,以便它不只是一个静态列表(除非这是你以后在做什么)。

看到这些解答获得更多信息:

Pivot Table Using MySQL

MySQL pivot table