2016-04-19 6 views
1

私は1行で合計を返すためにこのクエリを取得するのが難しいです。2行を与えるSQL SUM。私は1行したい

Code  WHQtyOnHand 
--------------------------- 
BNV203N  694 
BNV203N  3748 

私はトータルとして、それらを必要とする:ここで

SELECTst.[code], SUM(whst.WHQtyOnHand) 
FROM dbo.[StkItem] st, dbo.WhseStk whst 
WHERE whst.WHWhseID in (3, 4) 
    AND whst.WHStockLink = st.StockLink 
    AND st.Code = 'BNV203N' 
GROUP BY st.[Code], whst.WHWhseID, whst.WHStockLink 

は私が得る結果です。

+0

これも、SQL Serverの – Mihai

+4

[キックする悪い習慣:古いスタイルを使用すると、JOINの]で動作します(http://sqlblog.com/blogs/aaron_bertrand/archive/2009/10 /08/bad-habits-to-kick-using-old-style-joins.aspx) - 古いスタイル*カンマで区切られたテーブル*スタイルのリストがANSIの*適切な* ANSI 'JOIN'構文に置き換えられました - ** 92 ** SQL標準(** 20年以上前**)とその使用はお勧めしません –

+1

@MihaiそれはSQLサーバー上で動作します。 marc_sさんのおかげで、Rich Bennerの解決策に従って参加しました。 – CypherNet

答えて

5

あなたはちょうどst.Codeでグループ化したいです。私はまたそのデカルトの習慣のjoinwhere句から出て行くだろう。ただ、適切なINNER JOINを使用します。

SELECT st.[code], SUM(whst.WHQtyOnHand) 
FROM dbo.[StkItem] st 
INNER JOIN dbo.WhseStk whst 
    ON whst.WHStockLink = st.StockLink 
WHERE whst.WHWhseID IN (3,4) 
    AND st.Code = 'BNV203N' 
GROUP BY st.[Code] 
+3

適切な(先史時代以外の) 'join'構文のアドバイスのためにupvoted –

+1

ジョイント@リッチ – CypherNet

4

変更この行:

GROUP BY st.[Code], whst.WHWhseID, whst.WHStockLink 

あなたがグループWHWhseIDによって、あなたはそれらの行を抜け出すとき

GROUP BY st.[Code] 

へ。

+1

@Rockyのお返事ありがとうございます。私はジョインを使って余分な助言をしてくれたので、私は下のRich Bennersへの私の受け入れられた答えを変更しています。あなたはまだ私のupvoteを持っています:) – CypherNet

関連する問題