多个(与另一个表相关)行的SUM记录在另一个表中

时间:2016-12-05 22:24:53

标签: sql sql-server database ms-access

我有两个表,一个tblOrder和tblOrderDetail表。

tblOrderDetail包含以下行:

OrderDetailID  OrderID  Product  Quantity  UnitPrice  Discount   Total

    1            1        ABC      10      $240.00      10     $2,160.00 
    2            2        CDF      100     $200.00      10     $18,000.00
    3            3        GHI      200     $150.00       0     $30,000.00
    4            1        XYZ      40      $100.00       5     $3,800.00

我希望sql查询获取tblOrder中的Subtotal列,它是来自tblOrderDetail的相关OrderID Total的总和,如下所示:

OrderID     Sub Total
  1         $5,960.00  
  2         $18,000.00
  3         $30,000.00

我尝试这个SQL查询:

SELECT 
    OrderID
    ,(
        SELECT 
            SUM(((tblOrderDetail.UnitPrice) - (tblOrderDetail.UnitPrice * (tblOrderDetail.Discount / 100))) * (tblOrderDetail.Quantity)) 
        FROM 
            tblOrderDetail 
        WHERE tblOrderDetail.OrderID = tblOrder.OrderID
    ) AS [Sub Total] 
FROM 
    tblOrder

但它给出了这个

OrderID     Sub Total
  1         $0.00  
  2         $0.00
  3         $0.00

注意我希望动态Sub Total列不是tblOrderDetail表中的Total Column总和。

我希望有人能理解我在说什么,希望能帮助我实现这个目标!

2 个答案:

答案 0 :(得分:0)

使用Group by Clause与SUM聚合函数

importSpecifier

演示SQLFiddle

根据您的问题,这是一个相关的查询

    Select *, sum(Total) as totalforOrder from ordertbl group by OrderID;

这     tblOrder;

它在SQLFiddle

上工作正常

enter image description here

答案 1 :(得分:0)

您可以使用分组依据来执行此操作

Select OrderID, sum(Total) as [Sub Total] from tblOrderDetail group by OrderID;

You can get more details here !