[英]Merge - Insert if ID doesn't match
I already updated this content, I just want to ask if a ID doesn't match, how to add it using Merge
?我已经更新了这个内容,我只是想问如果一个ID不匹配,如何使用Merge
添加它?
MERGE INTO EmpMasterX01132020 a
USING AMAGroupEmpMaster b ON a.UserID = b.userid
WHEN MATCHED THEN
UPDATE
SET a.LastName = b.lastname,
a.FirstName = b.firstname,
a.MiddleName = b.middlename,
a.SuffixName = b.suffixname,
a.AkaName = b.akaname,
a.Gender = b.gender,
a.BirthDate = CONVERT(varchar, b.BirthDate , 23) ,
a.BirthPlace = '',
a.CivilStatus = b.CivilStatusID,
a.Citizenship = b.citizenship,
a.Religion = b.religion,
a.BranchCode = Payroll_Migration012020.dbo.Mgrt_fn_MapData('Branch',b.branchcode),
a.JDCode = b.positioncode,
a.TerminationReason = b.terminationreason ,
a.EmploymentStatus =(case when b.empresign='NULL' then 'ACTIVE' else 'RESIGNED' end) ,
a.EmpType = (CASE WHEN b.emptype ='N' then 0 else 1 end),
a.ApplicantNo = '';
Usually, the Merge statement always has two parts:通常,Merge 语句总是有两个部分:
-------- Preparing the dataset
MERGE INTO <target_table_name> AS T
USING (SELECT
COLUMN_NAME1 --primary key column
,COLUMN_NAME2
,COLUMN_NAME3
FROM <source_table_name>
WHERE <if_needed>
) AS S
ON (T.COLUMN_NAME1 = S.COLUMN_NAME1) -- primary key columns
-------- Part 1 - if the rows matched
WHEN MATCHED THEN
UPDATE SET T.COLUMN_NAME3 = S.COLUMN_NAME3
-------- Part 2 - if the rows don't match
WHEN NOT MATCHED THEN
INSERT (T.COLUMN_NAME1, T.COLUMN_NAME2, T.COLUMN_NAME3)
VALUES (S.COLUMN_NAME1, S.COLUMN_NAME2, S.COLUMN_NAME3);
Usually in some DBs as Oracle in order to make Update, you have to express it as a merge.通常在一些像 Oracle 一样的 DB 中,为了进行更新,您必须将其表示为合并。
MERGE INTO EmpMasterX01132020 a
USING AMAGroupEmpMaster b
ON a.UserID = b.userid
WHEN MATCHED THEN
UPDATE
SET a.LastName = b.lastname,
a.FirstName = b.firstname,
a.MiddleName = b.middlename,
a.SuffixName = b.suffixname,
a.AkaName = b.akaname,
a.Gender = b.gender,
a.BirthDate = CONVERT(varchar, b.BirthDate , 23) ,
a.BirthPlace = '',
a.CivilStatus = b.CivilStatusID,
a.Citizenship = b.citizenship,
a.Religion = b.religion,
a.BranchCode = Payroll_Migration012020.dbo.Mgrt_fn_MapData('Branch',b.branchcode),
a.JDCode = b.positioncode,
a.TerminationReason = b.terminationreason ,
a.EmploymentStatus =(case when b.empresign='NULL' then 'ACTIVE' else 'RESIGNED' end) ,
a.EmpType = (CASE WHEN b.emptype ='N' then 0 else 1 end),
a.ApplicantNo = ''
WHEN NOT MATCHED BY TARGET
INSERT(Lastname,FirstName, <List of all the columns>)
VALUES(b.lastname,b.FirstName,<List of values from b>)
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.