我有一个 MS Access 2007 数据库,需要为其创建更新。我尝试更新的表如下所示:
CarID WeekOf NumDataPoints NumWksZeroPoints
3AA May-14-2011 23 0
7BB May-14-2011 9 0
3AA May-21-2011 35 0
7BB May-21-2011 0 1
3AA May-28-2011 24
7BB May-28-2011 0
我正在处理 2011 年 5 月 28 日的最新记录集,要点是更新每辆汽车没有数据点的周数。我通过检查当前周的点数来完成此操作,如果确实有一些点数,则 #WeeksZeroPoints 将设置为零,如果当前的点数为零,则我将前几周的计数加一。在我的最后一周,我会输入
0
2
所以我尝试过类似的事情
UPDATE tblCars
SET NumWksZeroPoints = IIF(NumDataPoints<>0, 0, (SELECT MAX(NumWksZeroPoints) AS wzp
FROM tblCars AS f
WHERE f.CarID=tblCars.CarID AND
f.WeekEnding=#5/21/2011#) + 1
)
WHERE WeekOf=#5/28/2011#;
不幸的是,这并不像我想象的那样有效。我想我已经掌握了这个概念,而且大部分 SQL,我似乎无法让它发挥作用。这是针对 MS Access 的,所以我知道的其他一些技巧不起作用。任何帮助表示赞赏。
最佳答案
您可以(有些人可能会说应该)将其作为查询来执行,而无需更新表。如果您要捕获每辆车每周的数据点,您的查询可以使用日期数学来计算汽车没有数据点的周数。如果有人在您运行更新后插入汽车数据,会发生什么情况?您最终会得到不一致的数据。
关于sql - MS Access 更新并增加先前记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6216314/