2014-09-23 60 views
0

當我在MS ACCESS中運行這個非常簡單的查詢時,從一個表中,它將SUM列加倍。訪問查詢:TOP 1與TOTALS是加倍我的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

爲什麼這增加了一倍內在我的查詢,以及如何避免它?我只想通過數量降低總和的最高一個項目...聽起來很簡單。我想避免做一堆典型的「訪問垃圾」,比如進行表查詢等,有沒有辦法解決它?

+1

你可以編輯你的文章,添加一些你想看的樣本數據和結果嗎?這可能會幫助我們理解你想要的。由於查詢可能不正確/可能不是最佳使用方式。那麼請你能更新你的文章嗎? – PaulFrancis 2014-09-23 08:30:51

+0

我同意@PaulFrancis - 你需要[編輯]你的問題,以提供一個來自兩個表格的小樣本來說明問題。 (是的,你的查詢來自兩個表格,而不是「只有一個表格」。) – 2014-09-23 10:30:41

回答

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刪除重複項。我還建議添加一個合適的主鍵,如果那裏沒有一個('項目名稱'聽起來不是特別的主鍵 - ish,而'ItemCode'或'ItemID'會)並且與反對。