2012-01-04 107 views
1

我想要生成一個報表來累計一個月內不同分支機構訂購的總庫存數量,並且每個分支機構將按合併(GROUP BY)庫存量對數量進行總結。php mysql sum issue

我修剪了我的數據庫表,便於理解如下:

Item  Branch  Order_Quantity 
--------------------------------------- 
Pencil Branch-A   5 
Ruler Branch-D   3 
Staple Branch-C   12 
Pencil Branch-A   5 
Ruler Branch-B   3 
Staple Branch-C   2 
Pencil Branch-A   10 
Ruler Branch-A   6 
Staple Branch-D   1 

例如,以下是預期結果的結果草案:

Item  Branch-A  Branch-B  Branch-C  Branch-D 
---------------------------------------------------------- 
Pencil  20   15   32   8 
Ruler  12   0   40   10 
Staple  4    8    5   0 

等等...

如何使用查詢來調用上述結果並將每個總和分配給它們各自的分支列?下面

是我的查詢:

SELECT `Item`, `Branch`, sum(`Order_Quantity`) FROM `table` GROUP BY `Item` 

但是當我打電話,環表,結果會顯示總和量的每一個分支

Item  Branch-A  Branch-B  Branch-C  Branch-D 
---------------------------------------------------------- 
Pencil  75   75   75   75 
Ruler  62   62   62   62 
Staple  17   17   17   17 

希望有人能夠幫助這一點。

謝謝。

+0

究竟是你「循環」荷蘭國際集團?你需要粘貼到你的php中,因爲你的sql中沒有任何東西會在你顯示分支時產生分支的分支列。 – 2012-01-04 06:56:56

回答

1

這是某種形式的支點:

select item, 
    sum(case when branch = 'Branch-A' then order_Quantity else 0 end) as BranchA, 
    sum(case when branch = 'Branch-B' then order_Quantity else 0 end) as BranchB, 
    sum(case when branch = 'Branch-C' then order_Quantity else 0 end) as BranchC, 
    sum(case when branch = 'Branch-D' then order_Quantity else 0 end) as BranchD 
from yourTable 
group by item 
+0

非常感謝! – conmen 2012-01-05 01:36:32

0
SELECT SUM(Order_Quantity) AS CNT FROM `table` GROUP BY `Branch`; 
3

嘗試:

SELECT `Item`, `Branch`, sum(`Order_Quantity`) FROM `table` GROUP BY `Item`, `Branch` 
1

假設你有分支機構的數量有限,你可以爲每個「列」創建子選擇查詢你想與你的資金到顯示(每個分支)像這樣......

select 
    (select sum(order_quantity) from table where branch = 'Branch-A'), 
    (select sum(order_quantity) from table where branch = 'Branch-B'), 

等。

這不是一個很優雅的解決方案,但它會導致什麼 您正在尋找。

否則,您可以按照其他海報的建議,從sql的角度來看效率更高,但不會生成您希望看到的列(根據您的問題)。

+0

爲什麼你使用LIKE如果字符串是完全匹配? – 2012-01-04 07:13:24

+0

習慣的力量。始終使用=與比較字符串與like和數字。對我來說,看起來更容易。我不確定是否有效率損失,如果有的話,我從來沒有聽說過。 – 2012-01-04 07:24:11

+0

@DrDredel它使用正則表達式,所以它不是一個好習慣,當你不需要LIKE – 2012-01-04 07:32:23