我有两个表Product
和OrderItem
,如屏幕快照所示。
我想创建一个存储过程,以使用从该特定产品的所有销售中收取的金额更新TotalSale
表的Product
列。
要填充TotalSale
列,我必须乘以OrderItem
和UnitPrice
列,然后对Quantity
的同一产品逐行多次计算总金额再次必须将每种产品的总金额相加才能获得每种产品的销售总额。我是一个初学者,在弄清楚它时遇到了麻烦。
我在OrderItem
中添加了一列:
ALTER TABLE OrderItem
ADD TotalSale DECIMAL NULL
UPDATE dbo.OrderItem
SET TotalSale = UnitPrice * Quantity
然后我计算出每种产品的多个总金额的总和,以得出每种产品的总销售额:
SELECT
SUM(TotalSale) AS Gross
FROM
OrderItem
GROUP BY
ProductId
现在,作为一个初学者,我不知道如何用计算出的总值填充该列。任何提示或帮助,将不胜感激!
答案 0 :(得分:1)
一开始您对问题的描述有点难以理解,我会尽力帮助您,我相信您可以做到:
With MyCTE AS
( SELECT SUM(TSale) AS TotalSaleOI
FROM OrderItem GROUP BY ProductId
)
UPDATE P
SET TotalSale = C.TotalSaleOI
FROM Product AS P
INNER JOIN MyCTE AS C ON P.ProductId = C.ProductoId
答案 1 :(得分:0)
根据您的屏幕截图,我认为以下查询将为您工作:
UPDATE Product
SET TotalSale = COALESCE(
(SELECT SUM(TotalSale)
FROM OrderItem
WHERE OrderItem.ProductID = Product.ProductID), 0)
ISNULL子句将确保如果没有该产品的订单,它将计算结果为0。