【发布时间】:2014-08-09 11:04:40
【问题描述】:
我在 @temptable 中有一个临时表数据,我需要将此数据与表名 LU_BCOMS_UsersRepFamilies 进行比较
通过使用此 @temptable 数据,我需要根据 where 条件将主表 LU_BCOMS_UsersRepFamilies 替换为以下列
1) RepFamily_RepFamilyId
2) Users_UserId
我的查询如下:
declare @tempTable
Table(RepFamily_RepFamilyId int,Users_UserId varchar(500),CreatedDate varchar(500),CreatedBy varchar(500))
insert into @tempTable values('676','MV10310','2014-05-20 13:30:29.000','MV10310')
MERGE INTO LU_BCOMS_UsersRepFamilies AS target
USING @tempTable AS source
ON target.RepFamily_RepFamilyId = source.RepFamily_RepFamilyId
AND target.Users_UserId = source.Users_UserId
WHEN MATCHED THEN
UPDATE SET
target.RepFamily_RepFamilyId = source.RepFamily_RepFamilyId,
target.Users_UserId = source.Users_UserId,
target.CreatedDate = source.CreatedDate,
target.CreatedBy = source.CreatedBy
WHEN NOT MATCHED BY TARGET THEN
INSERT (RepFamily_RepFamilyId, Users_UserId, CreatedDate,CreatedBy)
VALUES (source.RepFamily_RepFamilyId, source.Users_UserId, source.CreatedDate,source.CreatedBy)
WHEN NOT MATCHED BY SOURCE THEN
DELETE WHERE target.RepFamily_RepFamilyId = source.RepFamily_RepFamilyId and target.Users_UserId = source.Users_UserId;
执行我的查询后,我收到以下错误
错误: 关键字“WHERE”附近的语法不正确。
你能根据上面指定的要求修改我的查询吗
Example :
RepFamily_RepFamilyId Users_UserId CreatedDate CreatedBy
600 MV10310 date ravi
601 MV10310 date ravi
602 KV110 date suma
603 GV122 date rajesh
in my temp table I have
insert into @tempTable values('600','MV10310','date','ravi')
after merging my master table show look like below :
RepFamily_RepFamilyId Users_UserId CreatedDate CreatedBy
600 MV10310 date ravi
602 KV110 date suma
603 GV122 date rajesh
【问题讨论】:
标签: sql sql-server merge sql-server-2008-r2