【问题标题】:How can i SUM records from a table to another after multiplying two columns将两列相乘后,如何将表中的记录求和
【发布时间】:2016-05-04 03:12:00
【问题描述】:

我有一个名为 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

感谢任何帮助

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:
    UPDATE OrderGroupNew
    SET SavedTotal = (
        SELECT SUM(UnitPrice * Quantity)
        FROM OrderItemNew
        WHERE OrderNumber = OrderGroupNew.OrderNumber
    ) 
    

    【讨论】:

      【解决方案2】:

      您也可以使用 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
      

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

      【讨论】:

      • 因为我的应用程序是用于演示的,所以我并不真正关心性能,而另一个工作如此 :) 感谢您抽出时间来写这个!将来可能会帮助其他人!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多