我想用MERGE UPDATE CLAUSE
更新我的表MA_PARTICIPANT
。我想更新兩列:SQL ORACLE MERGE表
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',但如果它已經'是',那麼我不應該更新此列。合併表將在MA_PARTICIPANT.part_id = TABLE_CHANGE.part_id
,但我不知道如何使用條件合併MA_PARTICIPANT.DEACT_FLG
。
最後,每個CUSTOMER_RK我更新應具有FLG = 'Y'
簡單MA_PARTICIPANT的例子:更新後
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 10 Y
2 10 N
3 20 Y
簡單TABLE_TO_CHANGE的例子:
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
聽起來像是你在更新部分需要一個where子句的合併聲明。如果我是你,我會先寫MERGE聲明並將其添加到問題中。 – Boneist