2014-04-17 51 views
3

我有以下MySQL表:總和基於動態兩列看重

item code | warehouse | qty 
--------------------------- 
itm001 | abc |10 
itm002 | xyz |20 
itm003 | pqr |20 
itm004 | pqr |15 
itm001 | abc |60 
itm002 | xyz |10 
itm004 | tqr |20 
itm003 | www |20 
itm001 | ppp |15 

我想要的之時,項目代碼和倉庫重複他們的數量合計: 例如: itm001 ABC重複顯示itm001 = 70 同樣的方式爲itm002和顯示總和itm002 = 30。

我不想要靜態where子句(其中項目代碼='itm001'和倉庫='abc'或項目代碼= 'itm002'和倉庫='xyz')。

+0

能否請你澄清你是否願意組行與同'itemcode,warehouse' +總結數量爲** **一個新行,或者是否希望用重複的總計數量重複原始行(可能還有其他列)。 – StuartLC

回答

7

你應該使用GROUP BYHAVING

SELECT itemcode,warehouse,SUM(qty) FROM yourtable 
GROUP BY itemcode,warehouse 
HAVING COUNT(*) > 1; 

HAVING過濾掉,只有在一個倉庫曾經存在的項目。

2

試試這個:

SELECT itemcode,warehouse,SUM(qty) FROM table1 GROUP BY warehouse,itemcode; 
1

使用此:

SELECT item_code, warehouse,sum(qty) 
FROM your_table 
GROUP BY item_code, warehouse 
1

您可以通過使用就吃條款上的一組。

select item_code, warehous, sum(qty), count(*) 
group by item_code, warehouse 
having count(*) > 1 
0

如果我理解正確的,你可以使用: SELECT item_code, warehouse , SUM(qty) FROM yourTable WHERE (...) GROUP BY item_code, warehouse;