Я хочу обновить таблицу MA_PARTICIPANT
, используя MERGE UPDATE CLAUSE
. Я хочу, чтобы обновить две колонки: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», но если он уже «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
Похоже, что вам нужно, где положение в вашем обновление части оператора слияния. Если бы я был вами, я бы сначала написал заявление MERGE и добавил его в вопрос. – Boneist