ms-access - 尽管分组,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 报表中使用分组时如何获得真实记录总和的任何想法?
解决方案
可能的选项:
无需在报告中进行分组和求和,而是将聚合查询加入到详细数据中
以库存数据作为 RecordSource 的主报表和用于相关位置详细信息的子报表
DSum() 域聚合函数,计算可以发生在域聚合中:
DSum("Weight * Average_CWT / 100", "tableORqueryName")
推荐阅读
- javascript - 如何使用http请求跟踪网站中的元素?
- html - 如何在 Materialise 中获取下拉菜单的值
- c++ - 如何解决 C++ std::string_view 超出范围的问题?
- python - 如何使用 NoParent BeautifulSoup 打印元素编号和元素内容?
- xcode4 - NSCollectionView 窗口根据您是退出程序还是从 Xcode 停止来更改窗口大小
- shell - Unix shell脚本while循环
- python - 如果您只有一个函数绑定到的类,如何获取定义函数的文件?
- plsql - where 子句中的嵌套解码
- conda - conda install -c bioconda angsd package not found 错误
- python - 正则表达式仅匹配存在重复匹配的一种情况?