2015-11-04 59 views
0

如何爲這個查詢做,如果條件....如果不存在的記錄,然後從這個選擇如果條件此查詢

SELECT CAST(left(TerminalName, patindex('%[^0-9]%', TerminalName+'.') - 1) as int) 
     ,'04944700' 
     ,SUBSTRING(TerminalName , CHARINDEX('-' , TerminalName) + 1, LEN(TerminalName)) 
     ,TerminalName 
     ,'Bulk' 
     ,'0010' 
     ,user 
     ,GETDATE() 
     ,user 
     ,GETDATE() 
FROM External_Blk_Itm_Contracts WHERE TerminalName NOT IN (SELECT MBFTERMINALNAME FROM budterminals) 

回答

0

插入其他更新要使用什麼是MERGE聲明。您的Select語句將成爲您的數據源,然後您將插入或更新,具體取決於是否存在匹配連接條件的行。

下面是T-SQL一個例子,我寫道:

MERGE ODS.dbo.Mytable as [Target] 
    USING [Source Query] as [Source] 
    ON [Target].SubId = [Source].SubId And [Target].WorkflowId = [Source].WorkflowId 
    WHEN NOT MATCHED BY TARGET THEN 
     INSERT 
     (
      [SubId] 
      ,[WorkflowId] 
      ,[ReadTime] 
      ,[ReadTimeLocal] 
     ) 
     VALUES 
     (
      [SubId] 
      ,[WorkflowId] 
      ,[ReadTime] 
      ,[ReadTimeLocal] 
     ) 
    WHEN MATCHED THEN UPDATE Set 
     [Target].ReadTime = [Source].ReadTime, 
     [Target].ReadTimeLocal = [Source].ReadTimeLocal, 
    ;