如何在将两列相乘后将记录从表记录到另一个表

时间:2016-05-03 18:53:44

标签: sql sql-server

我有一个名为orderItems的表,它有两列,数量和单价。它在该表中也有一个外键ordernumber

我有另一个名为ordergroup的表,主键为ordernumber,其中包含SavedTotal列,该列是基于数量*单位价格的订单总数,用于引用该ordernumber的所有订单商品行。

现在我正在努力的是sql查询,它可以根据特定的订单号获取所有订单商品并计算总成本。

我已经设法进行乘法,但是我错过了SUM,这是我的sql查询(基于SQL Server)到目前为止。

UPDATE OrderGroupNew
set OrderGroupNew.SavedTotal = OrderItemNew.UnitPrice*OrderItemNew.QUANTITY
    FROM OrderItemNew
    inner join OrderGroupNew on OrderItemNew.OrderNumber=OrderGroupNew.OrderNumber

感谢任何帮助

2 个答案:

答案 0 :(得分:1)

UPDATE OrderGroupNew
SET SavedTotal = (
    SELECT SUM(UnitPrice * Quantity)
    FROM OrderItemNew
    WHERE OrderNumber = OrderGroupNew.OrderNumber
) 

答案 1 :(得分:0)

您也可以使用TVP:

;With o as (
        select OrderItemNew.OrderNumber as OrderNumber, 
        SUM(OrderItemNew.UnitPrice*OrderItemNew.QUANTITY) as OrderSum
        Group by OrderItemNew.OrderNumber)
UPDATE OrderGroupNew
set OrderGroupNew.SavedTotal = o.OrderSum
FROM o
INNER JOIN OrderGroupNew on o.OrderNumber=OrderGroupNew.OrderNumber

第一个答案也是正确的。选择最佳的性能:)(不知道哪个是最好的,说实话!)