2017-04-20 30 views
-1

我在MS Access中工作,需要一個SQL解決方案。我有三個表爲:得到三個表與組的sql由

  1. 客戶:CustNum(鍵),名稱

  2. 訂單:IDCustNum金額

  3. 的支付方式: IDCustNum價值

我的問題是寫,會導致成一個查詢作爲SQL:

客戶名稱,TotalOderValue,TotalAmountPaid,BalancePayable

我試着在下面的Select查詢的三個表分組CustNum和它的工作,但似乎氣球的總和可能是由於重複行。

SELECT CustNum, 
     Sum(Amount) AS TotalOrderValue, 
     Sum(Value) AS TotalAmountPaid, 
     [TotalOrderValue]-[TotalAmoutPaid] AS BalancePayable 
FROM (Customers Inner Join Payments ON Customers.CustNum=Payments.CustNum) 
INNER JOIN Orders ON Customers.CustNum=Orders.CustNum GROUP BY Customers.CustNum 
+0

所以你正在招聘一個sql作家爲你的作業嗎? – maSTAShuFu

+0

你能告訴我們一些你寫的代碼嗎? –

+0

已添加,請查看並幫助 –

回答

0

基本訪問功能。

構建2聚合查詢。然後構建另一個將它們連接到Customers表的查詢。

或者如果需要,也可以嵌套第二個聚合查詢。使用SQL視圖將2個聚合查詢複製/粘貼到第三個查詢中,然後可以刪除2個聚合查詢對象。這裏是一體化查詢:

SELECT Customers.CustNum, Query1.TotalAmountPaid, Query2.TotalOrderValue, [TotalAmountPaid]-[TotalOrderValue] AS BalancePayable 
FROM 
(SELECT Payments.CustNum, Sum(Payments.Value) AS TotalOrderValue FROM Payments GROUP BY Payments.CustNum) AS Query2 
RIGHT JOIN (
(SELECT Orders.CustNum, Sum(Orders.Amount) AS TotalAmountPaid FROM Orders GROUP BY Orders.CustNum) AS Query1 
RIGHT JOIN Customers ON Query1.CustNum = Customers.CustNum) ON Query2.CustNum = Customers.CustNum; 
+0

這個工作就像一個魅力!非常感謝你,經過一個星期的努力,你才讓我休息。 –