SQL Server:如果不匹配,则从表中插入

SQL Server:如果不匹配,则从表中插入,sql,sql-server-2008,merge,Sql,Sql Server 2008,Merge,插入时是否可以从要合并到的表中进行选择?如果是的话,我会怎么做呢 这是我所拥有的,但它在说 关键字“SELECT”附近的语法不正确 代码: 进一步解释我要做的事情: 以前有一个主键'Premise',但它正在被更改为'Premise'和'PremiseServiceSeqNum'的键,我正在用当前值更新它。匹配时,它正在更新当前记录,当它不匹配时,我正在尝试复制表中的行,并使用一些其他信息更新它。您不能在不匹配时在子句中执行任意选择——您可以使用的只是那些在合并语句中定义为源的列(作为ICE的p

插入时是否可以从要合并到的表中进行选择?如果是的话,我会怎么做呢

这是我所拥有的,但它在说

关键字“SELECT”附近的语法不正确

代码:

进一步解释我要做的事情:


以前有一个主键'Premise',但它正在被更改为'Premise'和'PremiseServiceSeqNum'的键,我正在用当前值更新它。匹配时,它正在更新当前记录,当它不匹配时,我正在尝试复制表中的行,并使用一些其他信息更新它。

您不能在
不匹配时在
子句中执行任意
选择
——您可以使用的只是那些在
合并
语句中定义为
的列(作为ICE的
premsvcref
表)我只使用那些定义为源的列,但我认为可能无法执行我当时尝试执行的操作。匹配时是否有插入的技巧?
MERGE INTO TblPrem As MERC 
Using PremSvcXRef As ICE ON MERC.Premise = ICE.OldLocationNum 
                         AND MERC.PremiseServiceSeqNum IS NULL 
                         AND ICE.PremiseServiceSeqNum = (SELECT Min(PremiseServiceSeqNum)
                                                         FROM PremServXRef
                                                         WHERE MERC.Premise = OldLocationNum) 
WHEN MATCHED THEN 
   UPDATE 
      SET MERC.IcePremise = ICE.PremiseId,
          MERC.MercPremise = ICE.OldLocationNum,
          MERC.PremiseServiceSeqNum  = ICE.PremiseServiceSeqNum,
          MERC.MercCustNu = ICE.OldCustNum,
          MERC.IceCustNu = ICE.CustId

WHEN NOT MATCHED THEN
   INSERT(Premise, Zone, Address, City, State, CustomerName, Status, 
          Notes, Exclude, LastUpdate, upsize_ts, FarmTap, MultiMeter, 
          Abandoned, CustID, PremiseServiceSeqNum, MercPremise, IcePremise, 
          MercCustNu, IceCustNu)
     SELECT TOP 1 
        *,
        ICE.PremiseServiceSeqNum,
        ICE.OldLocationNum,
        ICE.PremiseId,
        ICE.OldCustNum,
        ICE.CustId
     FROM 
        TblPremisesCopy A 
     WHERE 
        A.Premise = ICE.OldLocationNum;