我有兩個不同的表,我想基於幾個條件更新其中之一。 我的表是: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