У меня есть table FOO
с некоторыми значениями идентификатора в col N_RA_ID
для MANUAL%
значений в col V_CUST_NUMBER
и некоторыми совпадающими значениями в col N_RA_ID
для неручных значений в col V_CUST_NUMBER
. Вот пример данных -
Я хочу самостоятельно присоединиться к col N_RA_ID
, и там, где есть точное совпадение, я хочу update N_RA_ID
до null WHERE V_CUST_NUMBER LIKE 'MANUAL%'
поэтому вывод должен выглядеть следующим образом -
Я попытался использовать слияние, но получил ORA-38104. Кто-нибудь может помочь, пожалуйста?
MERGE INTO FOO X
USING (
SELECT T1.V_CUST_NUMBER AS MAN_CUST,T1.N_RA_ID, T2.V_CUST_NUMBER
FROM FOO T1
JOIN FOO T2
ON T1.N_RA_ID = T2.N_RA_ID
AND UPPER(T1.V_CUST_NUMBER) NOT LIKE 'MANUAL%'
) Z
ON (X.N_RA_ID = Z.N_RA_ID)
WHEN MATCHED THEN UPDATE
SET X.N_RA_ID = null
WHERE UPPER(X.V_CUST_NUMBER) LIKE 'MANUAL%'
SQL Error: ORA-38104: Columns referenced in the ON Clause cannot be updated: "X"."N_RA_ID"
38104. 00000 - "Columns referenced in the ON Clause cannot be updated: %s"
*Cause: LHS of UPDATE SET contains the columns referenced in the ON Clause
*Action: