为不同的订单类型分开表格不会有帮助。对于数据库,最好为具有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