Получить SUM () из другой таблицы и применить его в другой таблице - PullRequest
0 голосов
/ 29 июня 2018

Как получить сумму Qty * Price в #OrderDetail в столбце TotalCost в #Order.

Заказать

ID   |   TotalCost
1    |    100

OrderDetail

OrderID   |   BasePrice   |   QtyOrdered
1         |    100.00     |      1
1         |     50.00     |      3

Я пробовал приведенный ниже запрос, но он дает мне приведенный выше результат.

UPDATE #Order
SET #Order.TotalCost = #OrderDetails.QtyOrdered * #OrderDetails.BasePrice
FROM #OrderDetails,#Order
WHERE #OrderDetails.OrderID = #Order.ID

Результат должен быть (100 * 1) + (50 * 3) = 250

Возможно ли достичь этого, не используя INNER QUERY или TABLE VARIABLES?

Ответы [ 3 ]

0 голосов
/ 29 июня 2018

Вы можете использовать subquery:

UPDATE o 
     SET o.TotalCost = (SELECT SUM(od.BasePrice * od.QtyOrdered) 
                        FROM #OrderDetails od 
                        WHERE od.OrderID = o.ID)
FROM #Order o;
0 голосов
/ 29 июня 2018

Попробуйте что-то вроде этого:

;WITH CTE AS(
    SELECT OrderID ,SUM(baseprice * QtyOrdered) as totalPrice
    FROM #OrderDetails
    GROUP BY OrderID 
)
UPDATE o
SET o.TotalCost = CTE.TotalPrice
FROM #Order INNER JOIN CTE ON CTE.OrderID = o.ID 
0 голосов
/ 29 июня 2018

Перед объединением необходимо объединиться:

UPDATE o
    SET TotalCost = od.cost
FROM o JOIN
     (SELECT od.OrderID, SUM(od.QtyOrdered * od.BasePrice) as cost
      FROM #OrderDetails od
      GROUP BY od.OrderID
     ) od
     ON od.OrderID = o.ID;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...