【发布时间】:2018-02-23 10:03:36
【问题描述】:
我打算做什么?
为匹配的目标记录的子集更新一些目标表字段,在源和目标之间进行匹配,前提是它们都是同一个表。
哪里需要帮助?Merge-into-target-using-select-source-on-子句似乎只控制两个类别-
- 当源记录和目标记录匹配时,更新所有匹配的目标记录
- 当源和目标记录不匹配时,插入或执行其他控制操作。
在我的情况下,当源记录和目标记录匹配时,我想对目标的不是所有记录执行更新,而是对目标记录的子集执行更新.
请求帮助以指导这一点。
这里的代码供参考(目标过滤限定符已注释,因为它肯定不会起作用):
MERGE INTO TGT
USING (
SELECT id, account_number, part_role, inc_val, pay_frequency,
period, pay_option, inclusion_value
FROM Table_1
WHERE id = var1
AND account_number = var2
AND part_role in ('YY','XX')
) SRC
ON (
SRC.id = TGT.id
AND SRC.account_number = TGT.account_number
--TGT.part_role in ('AA','BB','CC','DD','EE') --This must be a wrong place for this qualifier, please help on where to include this qualifier for filtering out target records for update purpose
)
WHEN MATCHED THEN
UPDATE SET
TGT.inc_val = SRC.inc_val
,TGT.pay_frequency = SRC.pay_frequency
,TGT.period = SRC.period
,TGT.pay_option = SRC.pay_option
,TGT.inclusion_value = SRC.inclusion_value;
其他相关详情
数据库:甲骨文
版本:11gR2
环境:Unix
【问题讨论】: