2014-01-14 211 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