我正在使用Oracle DB并且需要在两个表上执行Upsert,但我正在努力解决这个问题。以下是两个表的简化版本:
税务记录ID是唯一的,但是对于每个税务记录ID,可以有多个税簿(每个税务记录的税簿数量各不相同)。
现在,我需要在这两个表上执行upsert。我将把两个表从一个数据库移动到另一个数据库。我计划使用Merge语句来执行此操作。然而ON条件是我遇到麻烦的地方。这就是合并的规则:
合并税级和年份不是问题。但我无法弄清楚如何检查每本税簿的税率。在我的编程思想中,我知道我必须执行类似于foreach循环的东西。但我不知道如何将其转换为sql命令。
如果需要,我可以制作虚拟表格。但我想尽量减少我必须运行的不同查询的数量。我作为备份的一种方法是使用PL / SQL完成整个过程。但我更愿意,如果它可以通过sql完成,因为我将不得不学习PL / SQL,我的同事也将在未来需要和修改这个SQL。他们知道SQL,但也不知道PL / SQL。
以下是目前的代码:
Merge INTO tax_record tr
USING (Select * from tax_record@anotherdb, tax_control@anotherdb
where tax_control@anotherdb.tax_record_id = tax_record@anotherdb.tax_record_id) tc
ON tr.tax_class_id = tax_record@anotherdb.tax_class_id
AND tr.vintage = tax_record@anotherdb.vintage
AND ______?______
WHEN NOT MATCHED THEN
INSERT (tr.data1, tr.tax_record_id, tr.vintage, tr.tax_class_id)
values (tc.data1, tc.tax_record_id, tr.vintage, tr.tax_class_id)
在?马克,我想实现每个税簿检查的税率。这就是我需要帮助