难以在同一张表上创建更新总计查询
Posted
技术标签:
【中文标题】难以在同一张表上创建更新总计查询【英文标题】:Difficulty in creating update totals query on same table 【发布时间】:2010-08-10 19:03:26 【问题描述】:考虑下表:
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
我尝试过 group bys,但我得到了奇怪的结果,坦率地说,我无法解释。有谁知道我怎样才能实现这样的目标?
【问题讨论】:
由于 Access 的限制,我发现最简单的解决方案是执行一个 select 语句,然后在 VBA 中循环遍历结果集以运行更新。 【参考方案1】:不确定这是否适用于 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,它似乎无法正常工作。但是试一试!如果没有,您可以使用该问题中建议的方法。
【讨论】:
【参考方案2】:另一个可能的选择:
update t
set total = (select SUM(value) from table where nonUniqueID = t.nonUniqueID)
from table t
【讨论】:
以上是关于难以在同一张表上创建更新总计查询的主要内容,如果未能解决你的问题,请参考以下文章