Как использовать значение столбца идентификаторов целевой таблицы для вставки в другой столбец той же таблицы

Извините за название вопроса, если оно сбивает с толку. Таблица 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);

person Reeya Oberoi    schedule 28.07.2014    source источник


Ответы (1)


Я предлагаю изменить столбец ACCT_NUM как вычисляемый столбец.

ALTER Table STG_EXTERNAL_ACCT ALTER Column ACCT_NUM as 'EY|'+CAST(S.SEA_ID AS VARCHAR)

Также вы можете установить этот столбец в триггере.

Create Trigger TiggerName ON STG_EXTERNAL_ACCT 
INSTEAD OF INSERT
AS Begin
  Insert Into STG_EXTERNAL_ACCT (ACCT_Num, ...)
  Select 'EY|'+CAST(S.SEA_ID AS VARCHAR), ...
  From Inserted
End
person mehdi lotfi    schedule 28.07.2014