2016-12-05 101 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

相關問題