Я пытаюсь перестроить некоторую логику запроса на обновление MS Access с помощью функции слияния R, поскольку в логике запроса на обновление отсутствует несколько аргументов.
Ссылка на таблицу Google drive В моей базе данных "Распределение счета-фактуры" есть 2 таблицы:
Account_Mapping Table:
Origin Origin Postal Destination Destination Invoice
country code country postal code Account
FRA 01 GBR * ZR001
FRA 02 BEL * ZR003
BEL 50 ARG * ZR002
GER 01 ITA * ZR002
POL 02 ESP * ZR001
ESP 50 NED * ZR003
* 95 FRA 38 ZR001
BEL * * * ZR002
* * * * ZR003
FRA * FRA 25 ZR004
Load_ID
ID Origin Postal Destination Destination Default
country code postal code Invoice Account
2019SN0201948 FRA 98 FRA 38 XXAC001
2019SN0201958 POL 56 GBR 15 XXAC001
2019SN0201974 BEL 50 ARG 27 XXAC001
2019SN0201986 FRA 02 GER 01 XXAC001
учетная запись счета по умолчанию в таблицах (Load_ID и Status_ID) обновляется учетной записью счета из таблицы Account_Mapping.
К таблицам Account_Mapping и Load_ID могут быть присоединены: Страна происхождения и Страна происхождения, Почтовый индекс и Почтовый индекс происхождения,Страна назначения и пункт назначения, а также почтовый индекс назначения и почтовый код назначения.
В таблице account_mapping есть несколько «*», это означает, что строковое значение может принимать любое значение.Я не могу построить эту логику с помощью функции слияния.Пожалуйста, помогите мне с лучшей логикой.
New_Assigned_Account_Final <- merge(Load_ID, Account_Mapping, by.x =
c("Origin country","Postal code","Destination", "Destination postal code"),
by.y =
c("Origin country","Origin Postal code","Destination country", "Destination
postal code"))
Желаемый результат:
Обновлена таблица Load_ID, как показано ниже.
Load_ID:
ID Origin Postal Destination Destination Default
country code postal code Invoice Account
2019SN0201948 FRA 98 FRA 38 ZR003
2019SN0201958 POL 56 GBR 15 ZR003
2019SN0201974 BEL 50 ARG 27 ZR002
2019SN0201986 FRA 02 GER 01 ZR003
Для первогоID, идентификатором по умолчанию становится « ZR003 », потому что «FRA» в качестве страны происхождения не имеет почтового кода - «98», поэтому он попадает в область «*» и выделяется для ZR003 .
Для третьего идентификатора идентификатором по умолчанию становится « ZR002 », поскольку «BEL» в качестве страны происхождения имеет почтовый код - «50», связанный с ними почтовый индекс получателя «ARG» может быть любым из-за «*» в столбце почтового кода получателя, поэтому он назначен на ZR002 .
Спасибо за ваш ввод,