我有两个不同的表,我想基于几个条件更新其中之一。 我的表是:VBA SQL:基于记录数的更新记录
表1
---------------------------
ID | N1 | N2
---------------------------
1 22 12
1 5 0
1 87 12
2 67 0
2 6 0
2 3 0
2 60 12
3 55 0
3 64 12
4 8 0
4 75 12
4 4 0
5 58 12
5 69 12
5 36 12
5 3 0
表2
--------------------------
ID | MX | RN
--------------------------
1 33 2
2 45 3
3 99 4
4 67 2
5 87 4
欲仅使用式
计算那些具有一个N 2 = 0在表1N2 = MX-N1-RN
因此,例如,当ID = 1仅存在一个0,所以我们将总结所有的N1不在0
N2 = 33-(87 + 22)-2 = -78
和在ID = 3相同并= 5
N2 = 99-(64)-4 = 31
N2 = 87-(58 + 69 + 36)-4 = -80
然后该ID的N2将被更新为新记录。 ID = 2将被忽略,因为有三个记录= 0,所以对于ID = 4,有两个记录= 0。
更新后的表将 表1
---------------------------
ID | N1 | N2
---------------------------
1 22 12
1 5 -78
1 87 12
2 67 0
2 6 0
2 3 0
2 60 12
3 55 31
3 64 12
4 8 0
4 75 12
4 4 0
5 58 12
5 69 12
5 36 12
5 3 -81
,所以我想用SQL查询来做到这一点,但我不知道如何正确地完成它。
我做的代码如下:
SQL查询:
UPDATE TABLE1 AS I INNER JOIN TABLE2 AS P ON I.ID = P.ID
SET I.N2 =P.MX- SUM(I.N2)- (P.RN)
WHERE (SELECT COUNT(S.ID) FROM TABLE1 AS S
WHERE S.ID = " & [S.ID] & "
AND N2 = 0) =1;
VBA代码:
Private Sub GET_CAL()
DoCmd.SetWarnings False
DoCmd.OpenQuery "Query1"
DoCmd.SetWarnings True
End Sub
你的计算是混乱的,对于ID = 1,您要添加N2的N1值!= 0,但对于ID = 3,你得到N2 = 0的N1值。为什么?这里你也应该把N2!= 0的N1值对吗?即N2 = 33-(64)-2 = -33。 – Kavin
对不起,这是我的错。我纠正了它。 –
再犯错误你提到ID = 2,3的计算。您提到ID = 2和3的错误MX和RN值。 它应该如下 对于ID = 2,N2 = 99-(64)-4 = 31, 对于ID = 3,N2 = 87- (58 + 69 + 36)-4 = -80 – Kavin