难以在同一个表上创建更新总计查询

时间:2010-08-10 19:03:27

标签: sql ms-access ms-access-2007 sql-update aggregate

考虑下表:

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

我需要进行类似这样的查询(psuedo 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

我尝试过小组,但是我得到了奇怪的结果,坦率地说,我无法解释。有谁知道我怎么能做到这样的事情?

2 个答案:

答案 0 :(得分:3)

不确定这是否适用于Access,但请尝试一下:

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,它看起来不起作用。但试一试!如果没有,您可以使用该问题中建议的方法。

答案 1 :(得分:2)

另一种可能的选择:

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