爲不同的訂單類型分開表格不會有幫助。對於數據庫,最好爲具有sale_type字段的所有銷售設置一張表。
你沒有準確地描述你的表格是什麼樣的,所以我不得不做出一些假設。如果您的表包含一個OrderType
場,那麼你可以創建一個聯合查詢加入所有的銷售一起:
SELECT CustomerID
, OrderType
, Amount
FROM Online
UNION ALL SELECT CustomerID
, OrderType
, Amount
FROM [In-Store]
UNION ALL SELECT CustomerID
, OrderType
, Amount
FROM [Payment Plan]
如果您還沒有一個OrderType
你可以硬編碼也值到查詢:
SELECT CustomerID
, "Online" AS OrderType
, Amount
FROM Online
UNION ALL SELECT CustomerID
, "In-Store"
, Amount
FROM [In-Store]
UNION ALL SELECT CustomerID
, "Payment Plan"
, Amount
FROM [Payment Plan]
注意 - 在第一個Select
塊中爲OrderType
聲明字段名稱。你可以在每個模塊中完成,但Access只能查看第一個模塊。
與所有查詢一樣,結果以表格的形式顯示,並可以作爲對待。所以現在我們需要列出CustomerName
(我假設你有一個Customers
表),OrderType
和Customer
& OrderType
的總金額。
SELECT CustomerName
, OrderType
, SUM(Amount)
FROM Customers INNER JOIN
(
SELECT CustomerID
, OrderType
, Amount
FROM Online
UNION ALL SELECT CustomerID
, OrderType
, Amount
FROM [In-Store]
UNION ALL SELECT CustomerID
, OrderType
, Amount
FROM [Payment Plan]
) T1 ON Customers.CustomerID = T1.CustomerID
GROUP BY CustomerName
, OrderType
在三個表所有的銷售將有客戶表內的客戶,所以我們可以使用一個INNER JOIN
返回只記錄其中值出現兩個表(Customers表查詢表的&結果)英寸
UNION QUERY
包裝在括號中,並給出名稱T1
並加入到CustomerID
字段中的Customers
表。
我們對不屬於聚合函數的所有字段進行分組,因此可以在CustomerName
和OrderType
上進行分組,並對Amount
字段進行求和。
這就是您真正需要做的 - 每次您希望總計獲得最新的值時,讓查詢運行。應該沒有必要將結果推送到Totals
表格中,因爲只要您進行新的銷售(或某人退貨),該表格就會過期。
如果你真的想INSERT
這些數字爲Total
表中的第一行只是添加到SQL:
INSERT INTO Total (CustomerName, OrderType, Amount)
哇!非常感謝你的詳細解釋和所有的代碼,這真是太棒了。你的假設是正確的。我非常感謝你的幫助! – TechEng