【问题标题】:Countif and Sumif in Microsoft AccessMicrosoft Access 中的 Countif 和 Sumif
【发布时间】:2020-12-21 19:36:25
【问题描述】:

我来找你是因为我的 Access 数据库有问题。

为了简单起见,我有两张表,ProductsCustomers

这些表格来自我为跟踪销售而创建的一个简单 Excel 文件。

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

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

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

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

表格必须分开。

如果有人可以帮助我,我将不胜感激

感谢大家的阅读!

【问题讨论】:

  • 不要混淆 Excel(电子表格程序)和 Access(数据库程序)。
  • DCount()DSum() 将实现您的目的。
  • 你想用计数和总和值更新第二个表吗?

标签: sql excel ms-access count sum


【解决方案1】:

这看起来像一个连接和聚合:

select
    c.customerid,
    c.customer,
    count(*) itemcount,
    sum(p.price) totalbill
from products p
inner join customer c on c.customer = p.customer
group by c.customerid, c.customer

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

【讨论】:

  • 鉴于 OP 的值为零,外连接可能更合适。
【解决方案2】:

您没有提到您只是想要结果,或者您想用计算值更新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 不鼓励将计算值存储到表中[根据需要运行查询或报告],但您可以根据需要这样做。因此,要使用 Products 表中的值更新 Customers 表,您可以尝试下面的 UPDATE 查询。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    • 2022-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    相关资源
    最近更新 更多