当我在MS ACCESS中运行这个非常简单的查询时,它只从一个表中运行,它会使我的SUM列加倍。
SELECT TOP 1
data.Item,
reference.[Proposed New Category] AS Type,
Sum(data.[Qty Sold]) AS [Nbr Sold]
FROM
data
INNER JOIN
reference
ON
data.Item = reference.[Item Name]
WHERE
data.[Month Date] = [type the 1st of the month you want - like for Aug 2013, type 8/1/2013]
GROUP BY
data.Item, reference.[Proposed New Category]
ORDER BY
Sum(data.[Qty Sold]) DESC;是的,这两个我都看过了,所以请不要仅仅通过引用它们来混淆这个帖子,除非它是为了建设性地解释为什么它们实际上是适用的。它们都没有解决我的情况(一个是自连接,另一个也是连接-我没有自连接)。
Cumulative totals being doubled
Access 2010 doubling the sum in query
为什么这在我的查询中是双重的,我如何避免它??我只想最上面的一个项目数量售出的descending...sounds如此简单。我想避免做一堆典型的“访问垃圾”,比如make table queries等,有什么方法可以绕过它吗?
发布于 2014-09-23 20:54:27
可能导致这种情况的一件事是,如果连接真的是针对多对多关系,而不是预期的一对多关系,在这种情况下,INNER JOIN将返回两个表的多个交集,即使是弱意义上的“交集”。你加入一个文本字段的事实让我加倍怀疑--大概[Item Name]不是reference的主键吧?检验这一假设的一种方法是修改查询以强制一对多关系:
SELECT TOP 1 data.Item, r2.[Proposed New Category] AS Type, Sum(data.[Qty Sold]) AS [Nbr Sold]
FROM data
INNER JOIN (
SELECT reference.[Item Name], FIRST(reference.[Proposed New Category])
FROM reference
GROUP BY reference.[Item Name]) r2
ON d2.item = r2.[Item Name]
WHERE (((d2.[Month Date])=[type the 1st of the month you want - like for Aug 2013, type 8/1/2013]))
GROUP BY d2.Item, r2.[Proposed New Category]
ORDER BY Sum(d2.[Qty Sold]) DESC;如果结果是预期的值,那么您需要修复reference以删除重复的条目。我还建议添加一个合适的主键,如果还没有主键的话('Item Name‘听起来不是特别像主键,而'ItemCode’或'ItemID‘听起来会很像主键),并与data建立关系。
https://stackoverflow.com/questions/25986364
复制相似问题