访问查询:使用TOTALS的TOP 1将我的SUM加倍

时间:2014-09-23 03:26:05

标签: ms-access group-by

当我在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等,有没有办法解决它?

1 个答案:

答案 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}}反对。