IF OBJECT_ID('stage.sp_MrgIntezmenyAdatszolgaltatasok') IS NOT NULL BEGIN DROP PROCEDURE stage.sp_MrgIntezmenyAdatszolgaltatasok END GO CREATE PROCEDURE stage.sp_MrgIntezmenyAdatszolgaltatasok AS BEGIN MERGE stage.T_INTEZMENYADATSZOLG_STAGE AS trg USING ( SELECT i.ID AS C_INTEZMENYID, t.C_NEV AS C_TANEVNEV, ia.ID AS C_INTEZMENYADATSZOLGID, ia.C_SZAKBEIRATKFELVETT AS C_SZAKBEIRATKFELVETT, ia.C_SZAKBEIRATKJELENTKEZETT AS C_SZAKBEIRATKJELENTKEZETT, ia.TOROLT AS TOROLT FROM T_INTEZMENYADATSZOLGALTATAS ia INNER JOIN T_INTEZMENY i ON i.ID = ia.C_INTEZMENYID INNER JOIN T_TANEV t ON t.ID = ia.C_TANEVID WHERE ia.TOROLT = 'F' AND t.TOROLT = 'F' AND i.TOROLT = 'F' ) src ON (trg.C_INTEZMENYID = src.C_INTEZMENYID AND trg.C_INTEZMENYADATSZOLGID = src.C_INTEZMENYADATSZOLGID) WHEN MATCHED AND (trg.C_SZAKBEIRATKFELVETT <> src.C_SZAKBEIRATKFELVETT OR (trg.C_SZAKBEIRATKFELVETT IS NULL AND src.C_SZAKBEIRATKFELVETT IS NOT NULL) OR (trg.C_SZAKBEIRATKFELVETT IS NOT NULL AND src.C_SZAKBEIRATKFELVETT IS NULL)) OR (trg.C_SZAKBEIRATKJELENTKEZETT <> src.C_SZAKBEIRATKJELENTKEZETT OR (trg.C_SZAKBEIRATKJELENTKEZETT IS NULL AND src.C_SZAKBEIRATKJELENTKEZETT IS NOT NULL) OR (trg.C_SZAKBEIRATKJELENTKEZETT IS NOT NULL AND src.C_SZAKBEIRATKJELENTKEZETT IS NULL)) THEN UPDATE SET trg.C_SZAKBEIRATKFELVETT = src.C_SZAKBEIRATKFELVETT ,trg.C_SZAKBEIRATKJELENTKEZETT = src.C_SZAKBEIRATKJELENTKEZETT ,trg.TOROLT = src.TOROLT ,trg.LASTCHANGED = GETDATE() WHEN NOT MATCHED BY TARGET THEN INSERT ( C_INTEZMENYID, C_TANEVNEV, C_INTEZMENYADATSZOLGID, C_SZAKBEIRATKFELVETT, C_SZAKBEIRATKJELENTKEZETT, TOROLT, LASTCHANGED, CREATED ) VALUES ( src.C_INTEZMENYID, src.C_TANEVNEV, src.C_INTEZMENYADATSZOLGID, src.C_SZAKBEIRATKFELVETT, src.C_SZAKBEIRATKJELENTKEZETT, 'F', GETDATE(), GETDATE() ) WHEN NOT MATCHED BY SOURCE AND trg.TOROLT = 'F' THEN UPDATE SET trg.LASTCHANGED = GETDATE(), trg.TOROLT = 'T'; END GO