MS-Access - обновить столбец, используя результаты присоединения к другой таблице - PullRequest
0 голосов
/ 28 февраля 2019

Мне нужно обновить Amounts.Amt_lcy, умножив столбец Amt_fcy на соответствующий Fx_rates.Rate, соединив две таблицы данных.

*Amounts*

Data        |    Amt_fcy    |  Amt_lcy  
31/03/2018            10              
30/04/2018            15    


*Fx_rates*

Data        |  Rate  
31/03/2018      2.5
30/04/2018      3.1

Мой запрос следующий:

update Amounts set Amt_lcy = (выберите Amounts.Amt_fcy * Fx_rates.Rate из Amounts left join Fx_rates на Amounts.Data = Fx_rates.Data)

Я должен сделать некоторую основную ошибку, потому что я получаю 'Операция должнаиспользуйте обновляемый запрос 'ошибка.Любая помощь будет приветствоваться

1 Ответ

0 голосов
/ 28 февраля 2019

Это распространенная проблема.

В запросе на обновление в Access все столбцы в любом запросе, включая подзапросы, но исключая EXISTS, должны быть обновляемыми.

Поскольку выВы вычисляете Amounts.Amt_fcy*Fx_rates.Rate в подзапросе, и он не может быть обновлен, запрос не выполняется.

Этот запрос может быть переписан для выполнения этого вычисления в основном запросе и в то же время работать намного быстрее:

Update Amounts 
Left join Fx_rates on Amounts.Data=Fx_rates.Data
set Amt_lcy =  Amounts.Amt_fcy*Fx_rates.Rate
...