2016-12-05 114 views
1

我有两个表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,这是和小计列涉及的OrderID共有来自tblOrderDetail这样的:

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的总和。

我希望有人能理解我在说什么,并希望能帮助我实现这一点!

+0

找到总,你已经有场在你的列中 – monikapatel

+0

你想在计算总和后将结果集添加到tblOrder中吗? – monikapatel

+0

正如我提到我有两个表tblOrder和tblOrderDetail我想添加resultset(SubTotal)到tblOrder后计算tblOrderDetail值提到我的查询,但它不工作。 – FC3D

回答

0

使用GROUP BY子句与SUM聚合函数,

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

演示SQLFiddle

按你的问题,这里是一个相关查询

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

FROM tblOrder;

其工作罚款SQLFiddle

enter image description here

+0

如果你想计算总计使用方程,然后看看这个演示:http://sqlfiddle.com/#!9/fb22e8/10 – monikapatel

+0

正如我所说我有两个表tblOrder和tblOrderDetail 我想添加resultset(SubTotal)在计算tblOrderDetail的值作为提及我的查询但它不起作用后进入tblOrder。 – FC3D

+0

@ FC3D我已经添加了相关的查询为你,它的工作正常,但我必须说使用内部连接或组by子句,以获得结果集更快更有效 – monikapatel

相关问题