首页 > 解决方案 > 尽管分组,MS Access 报告中的 SUM 仍在使用所有行

问题描述

我有一个包含以下列的 MS Access 报告:

这是查询:

SELECT TOP 13 i.Code, i.Weight * i.Average_CWT / 100 as Amount, il.Location
FROM Inventory as i
LEFT JOIN Item_Location il ON i.Code = il.Item_Code
ORDER BY i.Code

该报告是按库存代码分组的,因为有一个 1 to many join 来获取位置(1 个项目可以有多个位置),所以我只想显示库存项目,数量,然后在该组下所有我在这里的位置:

在此处输入图像描述

此分组运行良好,您可以看到最后一条记录显示 1 个库存代码的 2 个位置。

当我尝试将 a 添加到报告标题时SUM,就会出现问题。Amounts图像顶部的总和实际上略有偏差。它应该是 3,795.8175,但显示为 3854.2405。

这是因为底部的行有 2 个位置。因此 SUM 不会将报告中显示的金额相加;相反,它根据查询计算总和,该查询返回具有 2 个位置的库存项目的 2 行,而不是报告中显示的 1。这就是 SUM 将两个记录值相加的原因,每个值都为 58.423。

我怎样才能解决这个问题?是的,由于位置不同,连接将返回 2 行,但数量不应加倍。我尝试将 SUM 计算为子查询,并将该字段添加到报告的顶部,但出现此错误:

Multi-level group by not allowed

我已经完成了这个,它不会解决我的问题:Multi-level GROUP BY clause not allowed in subquery

关于在 Access 报表中使用分组时如何获得真实记录总和的任何想法?

标签: ms-access

解决方案


可能的选项:

  1. 无需在报告中进行分组和求和,而是将聚合查询加入到详细数据中

  2. 以库存数据作为 RecordSource 的主报表和用于相关位置详细信息的子报表

  3. DSum() 域聚合函数,计算可以发生在域聚合中:
    DSum("Weight * Average_CWT / 100", "tableORqueryName")


推荐阅读