2016-10-08 4 views
0

製品1で結果グループに参加SQLの表の左外側に

購入数量1枚の請求書が私はコードの下に使用しています10

あるから3枚の請求書は、50 + 100 + 50 = 200と

販売量であるから

:添付画像に示すように

Total Purchase - Total Sale = Closing Qty 
    200  -  10 = 290 

が、私は間違った結果を取得していますとして結果を取得するための

enter image description here

あなたが最終的な結果をしたい場合は、私が正しく理解していれば、あなたは問題がある

 SELECT 
     P.PRODUCT as PRODUCTNAME, 
     sum(P.QUANTITY AS PURCHASE), 
     sum(isnull(S.QUANTITY,0)) AS SALE, 
     sum(isnull(P.QUANTITY,0))-sum(isnull(s.QUANTITY,0)) AS CLOSINGQTY 

    FROM [PurchaseData] P LEFT OUTER JOIN [DeliveryData1] S ON P.Product = s.PRODUCT 
    GROUP BY P.PRODUCT 
+1

どのような結果が得られますか? –

+1

SQLの質問では、DBMSに常にタグを付ける必要があります。 –

答えて

0

別のテーブルからの集計で作業する場合、テーブルを結合して、集計が、集計第一および凝集体を結合していない:

select 
    p.product as productname, 
    p.sum_quantity as purchase, 
    coalesce(s.sum_quantity, 0) as sale, 
    p.sum_quantity - coalesce(s.sum_quantity, 0) as closingqty 
from 
(
    select product, sum(quantity) as sum_quantity 
    from purchasedata 
    group by product 
) p 
left join 
(
    select product, sum(quantity) as sum_quantity 
    from deliverydata1 
    group by product 
) s on s.product = p.product; 

私は​​3210とifnullを交換しましたので、クエリが完全です標準SQLに準拠しています。

+0

ありがとうThorsten ........今、クエリは期待どおりに動作しています..... –

0

を修正するために私を導いてください。特定の商品について複数の購入記録があるためです。その場合は、その後、ちょうど集計JOIN

SELECT p.*, COALESCE(S.QUANTITY, 0) AS SALE, 
     COALESCE(P.QUANTITY, 0)-COALESCE(s.QUANTITY, 0) AS CLOSINGQTY 
FROM (SELECT p.product, p.quantity 
     FROM PurchaseData P 
     GROUP BY p.product 
    ) p LEFT OUTER JOIN 
    DeliveryData1 S 
    ON P.product = s.producct; 

実は、私は重複を持っている二つのテーブルのどの不明確だ - あるいはその両方を行う場合でも。だから、Sのために同様のことをする必要があるかもしれません。

0

により合計とグループを使用する必要があります私のコード

SELECT 
    P.PRODUCT as PRODUCTNAME, 
    P.QUANTITY AS PURCHASE, 
    ISNULL(S.QUANTITY, 0) AS SALE, 
    ISNULL(P.QUANTITY, 0) - ISNULL(s.QUANTITY, 0) AS CLOSINGQTY 
FROM 
    [PurchaseData] P 
LEFT OUTER JOIN 
    [DeliveryData1] S ON P.Product = s.PRODUCT 
関連する問題