Вы можете использовать MERGE
:
MERGE SampleList cr
USING (SELECT nr.SampleId, nr.[Type], nr.[Description]
FROM (VALUES (1,'A','AA'), (2,'B','BB'), (3,'C','CC'), (4,'D','DD')
) as nr (SampleId, [Type], [Description])
) AS nr -- Use missed alias
ON (cr.SampleId = a.SampleId)
WHEN MATCHED THEN
UPDATE SET cr.[Type] = nr.[Type], cr.[Description] = nr.[Description]
WHEN NOT MATCHED BY TARGET THEN
INSERT (SampleId, [Type], [Description])
VALUES (nr.SampleId, nr.[Type], nr.[Description]); -- to terminate the merge
Однако вы можете упростить свой подзапрос только с values
:
MERGE SampleList cr
USING ( VALUES (1,'A','AA'), (2,'B','BB'), (3,'C','CC'), (4,'D','DD')
) AS nr(SampleId, [Type], [Description])
ON (cr.SampleId = a.SampleId)
WHEN MATCHED THEN
UPDATE SET cr.[Type] = nr.[Type], cr.[Description] = nr.[Description]
WHEN NOT MATCHED BY TARGET THEN
INSERT (SampleId, [Type], [Description])
VALUES (nr.SampleId, nr.[Type], nr.[Description]); -- to terminate the merge