2010-08-10 65 views
1

考慮下表:難度創建於同一表更新彙總查詢

ID nonUniqueID value total 
-------------------------- 
1 12345  5  x 
2 12345  10 x 
3 789   20 x 
4 789   5  x 

我需要做一個查詢是這樣的(僞SQL),這將Access 2007年中工作:

UPDATE table 
SET total = SUM(value) 
WHERE nonUniqueID IS SAME; 

結果應該是如下:

ID nonUniqueID value total 
-------------------------- 
1 12345  5  15 
2 12345  10 15 
3 789   20 25 
4 789   5  25 

我試過分組依據,但我得到了奇怪的結果很坦率地說,我無法解釋。有人知道我能做到這樣嗎?

+0

由於訪問的限制,我發現最簡單的解決辦法是做一個SELECT語句,然後通過結果VBA設置爲運行更新循環。 – rageingnonsense 2010-08-10 23:34:01

回答

3

不知道這工作在訪問或沒有,但不妨一試:

update table t1 
inner join (
    select nonUniqueID, sum(value) as SumValue 
    from table 
    group by nonUniqueID 
) t2 on t1.nonUniqueID = t2.nonUniqueID 
set t1.total = t2.SumValue 

更新:基於this question,它看起來是行不通的。但是,試試吧!如果沒有,可以使用該問題中提出的方法。

+0

@rageingnonsense:看到我的更新。 – RedFilter 2010-08-10 19:10:53

2

另一種可能的選擇:

update t 
set total = (select SUM(value) from table where nonUniqueID = t.nonUniqueID) 
from table t