Да, каждое из значений в CASE операторе может быть заменено вложенным оператором выбора, окруженным '(' и ')', то есть это допустимый оператор:
update table1 set
field1 = CASE WHEN field2 = 'some value'
THEN (select field1 from table2 where table1.key_field = table2.key_field)
ELSE 'some default value'
END
Вы можете сделать то же самое с IIF оператором также
update table1 set
field1 = IIF(field2 = 'some value',
(select field1 from table2 where table1.key_field = table2.key_field),
'some default value')
Ваше заявление об обновлении не совсем ясно. Какое значение вы хотите получить из таблицы [All_Contracts]
? Это можно упростить так:
Update [Check_Result] set
[Recipient on contract] = IIF([Bénéficiaire] = "Personne morale",
COALESCE([Organisme], [Professionnel de santé]),
COALESCE([Professionnel de santé], [Organisme]))
Там вы можете заменить [Professionnel de santé]
или [Organisme]
на (select SomeField from [All_Contracts] where [All_Contracts].[ID Contract] = [Check_Result].[Référence])
.