我正在尝试使用R的合并功能重建一些MS Access更新查询逻辑,因为更新查询逻辑缺少一些参数。
Table link 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,默认ID变为“ ZR003 ”,因为作为原产国的“ FRA”没有邮政编码-“ 98”,因此它属于所有“ *” ”存储桶,并分配给 ZR003 。
对于第三个ID,默认ID为“ ZR002 ”,因为作为原产国的“ BEL”具有与之关联的邮政编码“ 50”,而目的地邮政编码为“ ARG” “”可以是任何东西,因为“目的地”邮政编码栏中的“ *”,因此已分配给 ZR002 。
感谢您的投入。