나는이 멋진 기능에 대해 알게되었습니다. 나는 몇 가지 질문을한다. 아래 진술을 고려하십시오.SQL Server 2008에서 MERGE 사용
어떻게 작동하는지 이해하는 방법입니다. USING 문은 일치하는 항목이 있는지 비교하기 위해 비교됩니다. 지금은 어떻게 사용하고 싶지만 MATCH 부분의 소스 테이블에서 다른 두 개의 열을 사용하려고합니다. 나는 그것을 할 수 없다. 그래서 거기에 2 열 (decesed (나는 그 철자가 잘못된 :) :) 및 hicno_enc) 철자를 사용할 수있는 방법이 무엇입니까?
내가 할 수있는 일은 가능한지 모르지만 행이 대상에는 있지만 소스가 아닌 경우에는 비활성으로 표시하십시오.
SELECT FIRST_NAME, LAST_NAME, SEX1, BIRTH_DATE
FROM
aco.tmpimport i
INNER JOIN aco.patients p
ON p.hicnoenc = i.hicno_enc
MERGE aco.patients AS target
USING (
SELECT FIRST_NAME, LAST_NAME, SEX1, BIRTH_DATE
FROM aco.tmpimport
) AS source
ON target.hicnoenc = source.hicno_enc
WHEN MATCHED AND target.isdeceased <> CONVERT(BIT,source.decesed) THEN
UPDATE
SET
target.isdeceased = source.decesed,
updatedat = getdate(),
updatedby = 0
WHEN NOT MATCHED THEN
INSERT (firstname, lastname, gender, dob, isdeceased, hicnoenc)
VALUES (source.FIRST_NAME,
source.LAST_NAME,
source.sex1,
source.BIRTH_DATE,
source.decesed,
source.hicno_enc);
그건 제가 언급 한 것들 중 하나입니다. 선택에 2 개의 열을 추가하면 목표에 해당하는 모든 열을 일치 시키려고합니다. 그 2 개는 다를 수 있기 때문에 나는 그 (것)들에 일치하고 싶지 않다, 그러나 나는 그 (것)들을 이용할 수 있고 싶다. – dbinott
아니요. using 절에 있기 때문에 일치하는 데 자동으로 사용되지 않습니다. –
오, 그래서이 target.hicnoenc = source.hicno_enc에 일치합니다? 우수한. – dbinott