Microsoft Access中的Countif和Sumif

问题描述

我来找您有关我的Access数据库的问题。

为简单起见,我有两个表ProductsCustomers

Products table

Customers table

这些表来自我创建的用于跟踪销售情况的简单Excel文件

在此文件中,ItemCount表中的字段TotalBillCustomers是使用countifsumif的计算字段,如下所示:

ItemCount : =COUNTIF(Products[Customer],[@Customer])

TotalBill : =SUMIF(Products[Customer],[@Customer],Products[Price])

我已经绝望地意识到,MS Access在计算字段中没有提供这些功能,但是必须有一种方法可以做到如此基本。

表必须保持分开。

如果有人能以我最感激的方式帮助我

谢谢大家阅读!

解决方法

这看起来像是联接和聚合:

=IF(ISNA(VLOOKUP(A2,$D$2:$D$4,1,FALSE)),"No","Yes")

请注意,您不应使用客户名称来关联这两个表,而应使用客户ID,该ID大概是客户表的主键。

,

您没有提及只是想要结果还是要使用计算值更新Customers表列。因此,如果您要显示所有客户表单customers表,即使Products表上没有交易,那么请使用以下查询

SELECT Customers.CustomerID,Customers.Customer,P.Cnt AS ItemCount,P.Sm AS TotalBill
FROM (SELECT products.customer AS PC,Count(Products.Product) AS Cnt,Sum(Products.Price) AS Sm FROM Products GROUP BY Products.Customer)  AS P 
RIGHT JOIN Customers ON P.PC = Customers.Customer;

尽管MS-Access不鼓励将计算值存储到表中[根据需要运行查询或报告],但是您可以根据需要进行操作。因此,要使用Customers表中的值更新Products表,可以在UPDATE查询下面尝试。

UPDATE Customers SET Customers.ItemCount = 
DCount("Product","Products","Customer= '" & Customers.Customer & "'"),Customers.TotalBill = 
DSum("Price","Customer= '" & [Customers].[Customer] & "'");

enter image description here