簡體   English   中英

如何使用目標表的標識列值插入同一表的另一列

[英]How to use identity column value of target table to insert in another column of same table

請避免問題的標題令人困惑。 表E是源,表S是目標。 S.SEA_ID是標識列(int,不為null)。 每當未滿足這些連接條件且NOT MATCHED AND E.ACCT_NUM IS NULL ,我想插入值'EY|' + CAST(S.SEA_ID AS VARCHAR) '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);

我建議將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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM