我正在使用Access 2016,并且我有一个表,其中缺少一些数据。我需要根据同一表的其他行更新丢失的数据。该表具有两个标识符和两个条件字段,而空字段代表丢失的数据。幸运的是,仅在Criteria2列中以及Criteria1不为NULL时才丢失数据:
Identifyer1 Identifyer2 Criteria1 Criteria2
10 a A3
10 a X NULL
20 b B3
30 c C3
40 d D3
40 d Y NULL
要填充丢失的数据,只需复制相同标识符的Criteria2值即可。因此结果应如下所示:
Identifyer1 Identifyer2 Criteria1 Criteria2
10 a A3
10 a X A3
20 b B3
30 c C3
40 d D3
40 d Y D3
我已经尝试过类似的操作,但是我无法完成代码:
Update table1 Set Criteria2 = (
如何在此处复制值?) Where Criteria1 is not NULL AND Identifyer1 = Identifyer1 AND Identifyer2 = Identifyer2
答案 0 :(得分:1)
尝试一下
Update table1
Set Criteria2 = (
select max(criteria2) from table1 t1
where t1.identifier1 = table1.identifier1
and t1.identifier2 = table1.identifier2
and t1.criteria2 is not null
)
Where Criteria1 is not NULL
答案 1 :(得分:0)
由于更新查询必须是MS Access中的updateable,因此请考虑域集合DMax
,它对应于相关的子查询:
UPDATE table1 t1
SET Criteria2 = DMax("Criteria2", "table1",
"Criteria1 IS NOT NULL AND Identifyer1 ='" & t1.Identifyer1 & "'
AND Identifyer2 = '" & t1.Identifyer2 & "'")