当我在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
为什么我的查询中固有的加倍,我怎么能避免它?我只想要按出售数量减少的总和排在最前面的项目......听起来很简单。我想避免做一堆典型的“访问垃圾”,比如make table queries等,有没有办法解决它?
答案 0 :(得分:0)
可能导致这种情况的一件事是,如果连接实际上是针对多对多关系而不是预期的一对多关系,那么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
如果出现预期值,则需要修复data
以删除重复的条目。我还建议添加一个合适的主键,如果已经没有一个('Item Name'听起来不是特别主键,而'ItemCode'或'ItemID'会)并与{建立关系} {1}}反对。