我想使用MA_PARTICIPANT
更新我的表MERGE UPDATE CLAUSE
。我想更新两列:
MA_PARTICIPANT.CUSTOMER_RK,MA_PARTICIPANT.DEACT_FLG. CUSTOMER_RK
将使用我的第二个表TABLE_CHANGE
进行更新,其中包含两列: -
CUSTOMER_RK,NEW_CUSTOMER_RK. MA_PARTICIPANT.DEACT_FLG
中的 MA_PARTICIPANT
可能是'Y'或'N',如果是'N',那么我应该将其更改为'Y',但如果它已经'Y'那么我应该不更新此列。合并表格将在MA_PARTICIPANT.part_id = TABLE_CHANGE.part_id
上,但我不知道如何在MA_PARTICIPANT.DEACT_FLG
上使用条件合并。
最后,我更新的每个CUSTOMER_RK都应该有flg ='Y'
MA_PARTICIPANT的简单示例:
PART_ID CUSTOMER_RK DEACT_FLG
1 10 Y
2 10 N
3 20 Y
TABLE_TO_CHANGE的简单示例:
PART_ID CUSTOMER_RK NEW_CUSTOMER_RK
1 10 100
2 10 100
3 20 200
更新后的MA_PARTICIPANT:
PART_ID CUSTOMER_RK DEACT_FLG
1 100 Y
2 100 Y
3 200 Y
我想它会是:
merge INTO MA_PARTICIPANT P USING
(SELECT * from TABLE_TO_CHANGE) TT ON (TT.PART_ID = P.PART_ID)
WHEN matched THEN
UPDATE
SET
IF P.DEACTIVATED_FLG <> 'Y' THEN
P.CUSTOMER_RK = TT.NEW_CUSTOMER_RK,
P.DEACTIVATED_FLG = 'Y'
ELSE
P.CUSTOMER_RK = TT.NEW_CUSTOMER_RK
答案 0 :(得分:0)
这应该更新所有匹配的行,将DEACT_FLG
设置为Y,将CUSTOMER_RK
设置为NEW_CUSTOMER_RK
:
MERGE INTO MA_PARTICIPANT P
USING TABLE_TO_CHANGE TT
ON (TT.PART_ID = P.PART_ID)
WHEN matched THEN
UPDATE
SET CUSTOMER_RK = NEW_CUSTOMER_RK,
DEACT_FLG = 'Y'