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