2013-05-07 49 views
3

我需要對來自多個表的數據進行復雜的求和,但我無法弄清楚該怎麼做。MS SQL中的複數SUM

這是我的表

[Article] 
ArticleId  Description  NetPurchase 
1001   Shoe   500 
1002   Box    100 

[Product] 
ProductId  Description  NetPurchase 
3001   Shoe in Box  ? 

[ProductArticle] 
ProductArticleId  ArticleId  ProductId  Qty 
1     1001   3001   5 
2     1002   3001   2 

NetPurchase在產品的總和應屬於產品3001 ProductArticle的所有文章。在此示例中(500 * 5 + 100 * 2)= 2700

說明:對於Product中的所有行,我應該加入ProductArticle以獲取所有相關文章並使用ProductProducts中的Qty進行乘法運算。它要總結這一切Product.NetPurchase

+0

必須是一個單一的查詢?或者它可以是一個存儲過程? – Raptor 2013-05-07 09:20:20

+0

想一想,如果可能,我想在單個查詢中執行此操作。 – 2013-05-07 09:22:32

回答

3
WITH records 
AS 
(
    SELECT a.ProductId, SUM(a.Qty * b.NetPurchase) TotalPurchase 
    FROM ProductArticle a 
      INNER JOIN Article b 
       ON a.ArticleId = b.ArticleId 
    GROUP BY a.ProductId 
) 
UPDATE a 
SET  a.NetPurchase = b.TotalPurchase 
FROM Product a 
     INNER JOIN records b 
      ON a.ProductId = b.ProductId  
+0

哇!這是很快:) – 2013-05-07 09:25:05

+0

嘗試,並給出一個反饋,如果它會工作':)' – 2013-05-07 09:29:59

+0

@JW웃 - 你仍然在重新問題:P – hims056 2013-05-07 09:30:30