2013-05-07 4 views
3

Мне нужно сделать сложную сумму с данными из нескольких таблиц, но я не могу понять, как это сделать.Комплекс SUM в MS SQL

Это мои таблицы

[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

Пояснение: Я хочу использовать SQL UPDATE для всех строк в Product и присоединиться к ProductArticle, чтобы получить все связанные статьи с NetPurchase и умножить их на Qty в ProductArticle. Необходимо просуммировать все это Product.NetPurchase

+0

должен быть один единственный запрос? или это может быть хранимая процедура? – Raptor

+0

Думаю, я хочу сделать это в одном запросе, если это возможно. –

ответ

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

Ничего себе !! это было быстро :) –

+0

попробуйте это и дайте отзыв, если он будет работать ':)' –

+0

@JW 웃 - Вы все еще задаете вопросы: P – hims056

Смежные вопросы