2012-02-15 26 views
0

私はすべてのストアで見つけることができる製品のリストとそれぞれの数量を返すSQL文を作成しています。次のようにSELECTステートメントのサブクエリ(MySQL)

私のテーブルの構造(いくつかのサンプルデータでは)次のとおりです。

 
productID - size - color - stock - storeID 
1   - S - RED01 - 1  - BCN 
1   - S - RED01 - 3  - MAD 
2   - S - YEL02 - 0  - BCN 
2   - S - YEL02 - 2  - MAD 
1   - S - RED01 - 1  - BCN2 

私はこの1と同様の結果必要があります:私はこの文を使用してい

 
productID - size - stockBCN (BCN + BCN2) - stockMAD 
1   - S - 2      - 3 
2   - S - 0      - 2 

をし、ユニークな商品のためだけに問題なく動作します

どのように変更して、テーブル?

答えて

7

おそらくすなわち、代わりにそこDISTINCTと一緒に行くのGROUP BY句を活用したい:

SELECT productId, Size, 
SUM(CASE WHEN storeID IN ('BCN', 'BCN2') THEN stock ELSE 0 END) AS stockBCN, 
SUM(CASE WHEN storeID = 'MAD' THEN stock ELSE 0 END) AS stockMAD 
FROM stocks 
GROUP BY productId, Size 
+0

このソリューションは、より良い – Kaii

+0

これを実行しますまさに私が必要としていたものです。ありがとう! –

1

case文を使用するには、IMOのプライムタイム

Select productID, Size, Color, 
SUM(CASE WHEN STOREID IN ('BCN','BCN2') THEN stock else 0 end) as StockBCN, 
SUM(Case WHEN STOREID = 'MAD') THEN stock else 0 end) as StockMad 
FROM STOCKS 
Where storeID in ('BCN', 'BCN2','MAD') 
GROUP BY productID, Size, Color 
関連する問題