2015-11-04 82 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, 
    ;