Извините за название вопроса, если оно сбивает с толку. Таблица E является исходной, а таблица S — целевой. S.SEA_ID
— это столбец идентификаторов (целое число, а не нуль). Всякий раз, когда эти условия соединения равны NOT MATCHED AND E.ACCT_NUM IS NULL
, я хочу вставить значение 'EY|' + CAST(S.SEA_ID AS VARCHAR)
в столбец S.ACCT_NUM
. Но я получаю ошибку
Не удалось связать составной идентификатор "S.SEA_ID".
Можно ли вставить значение столбца идентификаторов целевой таблицы, чтобы заполнить другой столбец той же целевой таблицы? Если это невозможно в инструкции MERGE ниже, каковы мои другие варианты?
MERGE INTO STG_EXTERNAL_ACCT S
USING ##EYDUPLICATES E
ON E.COUNTERPARTY_NAME = S.COUNTERPARTY_NAME
AND E.COUNTERPARTY_ADDRESS = S.COUNTERPARTY_ADDRESS
AND E.COUNTERPARTY_STATE = S.COUNTERPARTY_STATE
AND E.COUNTERPARTY_COUNTRY = S.COUNTERPARTY_COUNTRY
AND E.COUNTERPARTY_CITY = S.COUNTERPARTY_CITY
WHEN NOT MATCHED AND ISNULL(E.ACCT_NUM,'')=''
THEN INSERT (ACCT_NUM, COUNTERPARTY_NAME, COUNTERPARTY_ADDRESS,
COUNTERPARTY_STATE, COUNTERPARTY_COUNTRY, COUNTERPARTY_CITY)
VALUES ('EY|' + CAST(S.SEA_ID AS VARCHAR),E.COUNTERPARTY_NAME,
E.COUNTERPARTY_ADDRESS, E.COUNTERPARTY_STATE,
E.COUNTERPARTY_COUNTRY, E.COUNTERPARTY_CITY);