IF OBJECT_ID('stage.sp_MrgOsztalyCsoportLetszam') IS NOT NULL BEGIN DROP PROCEDURE stage.sp_MrgOsztalyCsoportLetszam END GO CREATE PROCEDURE stage.sp_MrgOsztalyCsoportLetszam AS BEGIN MERGE stage.T_OSZTALYCSOPORTLETSZAM_STAGE AS trg USING ( SELECT ocs.C_INTEZMENYID AS C_INTEZMENYID, ocs.ID AS C_OSZTALYCSOPORTID, MAX(cs.C_OSZTALYBONTASID) C_OSZTALYBONTASID, MAX(ocs.C_EVFOLYAMTIPUSA) as C_EVFOLYAMTIPUSA, SUM(IIF(tcs.ID IS NOT NULL, 1, 0)) AS C_OSZTALYCSOPORTLETSZAM, MAX(te.C_NEV) AS C_TANEVNEV, MAX(ocs.C_NEV) AS C_OSZTALYCSOPORTNEV, MAX(cs.C_TIPUSA) AS C_CSOPORTTIPUS, MAX(ocs.C_TERVEZETTLETSZAM) AS C_TERVEZETTLETSZAM, MAX(IIF(cs.ID IS NULL, 'O', 'CS')) AS C_OSZTALYCSOPORTTIPUS, MAX(ocs.C_FELADATELLATASIHELYID) AS C_FELADATELLATASIHELYID, MAX(ocs.C_VEGZOSEVFOLYAM) AS C_VEGZOSEVFOLYAM FROM dbo.T_OSZTALYCSOPORT ocs LEFT JOIN dbo.T_TANULOCSOPORT tcs ON ocs.ID = tcs.C_OSZTALYCSOPORTID LEFT JOIN dbo.T_CSOPORT cs ON cs.ID = ocs.ID INNER JOIN dbo.T_INTEZMENY i ON i.ID = ocs.C_INTEZMENYID AND i.TOROLT = 'F' INNER JOIN dbo.T_TANEV te ON te.ID = ocs.C_TANEVID AND te.TOROLT = 'F' -- AND te.C_AKTIV = 'T' WHERE ocs.TOROLT = 'F' AND i.TOROLT = 'F' AND te.TOROLT = 'F' AND tcs.TOROLT = 'F' AND (cs.ID IS NULL OR (cs.ID IS NOT NULL AND cs.C_OSZTALYBONTASID IS NOT NULL)) AND tcs.ID IS NULL OR (tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL)) GROUP BY ocs.ID, ocs.C_INTEZMENYID, ocs.C_TANEVID--, ia.C_ROVIDNEV, ia.C_OMKOD, te.C_NEV ) src ON (trg.C_INTEZMENYID = src.C_INTEZMENYID AND trg.C_OSZTALYCSOPORTID = src.C_OSZTALYCSOPORTID) WHEN MATCHED AND (trg.C_EVFOLYAMTIPUSA <> src.C_EVFOLYAMTIPUSA OR (trg.C_EVFOLYAMTIPUSA IS NULL AND src.C_EVFOLYAMTIPUSA IS NOT NULL) OR (trg.C_EVFOLYAMTIPUSA IS NOT NULL AND src.C_EVFOLYAMTIPUSA IS NULL)) OR (trg.C_OSZTALYCSOPORTLETSZAM <> src.C_OSZTALYCSOPORTLETSZAM OR (trg.C_OSZTALYCSOPORTLETSZAM IS NULL AND src.C_OSZTALYCSOPORTLETSZAM IS NOT NULL) OR (trg.C_OSZTALYCSOPORTLETSZAM IS NOT NULL AND src.C_OSZTALYCSOPORTLETSZAM IS NULL)) OR (trg.C_OSZTALYCSOPORTNEV <> src.C_OSZTALYCSOPORTNEV OR (trg.C_OSZTALYCSOPORTNEV IS NULL AND src.C_OSZTALYCSOPORTNEV IS NOT NULL) OR (trg.C_OSZTALYCSOPORTNEV IS NOT NULL AND src.C_OSZTALYCSOPORTNEV IS NULL)) OR (trg.C_OSZTALYBONTASID <> src.C_OSZTALYBONTASID OR (trg.C_OSZTALYBONTASID IS NULL AND src.C_OSZTALYBONTASID IS NOT NULL) OR (trg.C_OSZTALYBONTASID IS NOT NULL AND src.C_OSZTALYBONTASID IS NULL)) OR (trg.C_TERVEZETTLETSZAM <> src.C_TERVEZETTLETSZAM OR (trg.C_TERVEZETTLETSZAM IS NULL AND src.C_TERVEZETTLETSZAM IS NOT NULL) OR (trg.C_TERVEZETTLETSZAM IS NOT NULL AND src.C_TERVEZETTLETSZAM IS NULL)) OR (trg.C_CSOPORTTIPUS <> src.C_CSOPORTTIPUS OR (trg.C_CSOPORTTIPUS IS NULL AND src.C_CSOPORTTIPUS IS NOT NULL) OR (trg.C_CSOPORTTIPUS IS NOT NULL AND src.C_CSOPORTTIPUS IS NULL)) OR (trg.C_FELADATELLATASIHELYID <> src.C_FELADATELLATASIHELYID OR (trg.C_FELADATELLATASIHELYID IS NULL AND src.C_FELADATELLATASIHELYID IS NOT NULL) OR (trg.C_FELADATELLATASIHELYID IS NOT NULL AND src.C_FELADATELLATASIHELYID IS NULL)) OR (trg.C_VEGZOSEVFOLYAM <> src.C_VEGZOSEVFOLYAM OR (trg.C_VEGZOSEVFOLYAM IS NULL AND src.C_VEGZOSEVFOLYAM IS NOT NULL) OR (trg.C_VEGZOSEVFOLYAM IS NOT NULL AND src.C_VEGZOSEVFOLYAM IS NULL)) THEN UPDATE SET trg.C_EVFOLYAMTIPUSA = src.C_EVFOLYAMTIPUSA, trg.C_OSZTALYCSOPORTLETSZAM = src.C_OSZTALYCSOPORTLETSZAM, trg.C_OSZTALYCSOPORTNEV = src.C_OSZTALYCSOPORTNEV, trg.C_OSZTALYBONTASID = src.C_OSZTALYBONTASID, trg.C_TERVEZETTLETSZAM = src.C_TERVEZETTLETSZAM, trg.C_CSOPORTTIPUS = src.C_CSOPORTTIPUS, trg.C_FELADATELLATASIHELYID = src.C_FELADATELLATASIHELYID, trg.C_VEGZOSEVFOLYAM = src.C_VEGZOSEVFOLYAM, trg.LASTCHANGED = GETDATE(), trg.TOROLT = 'F' WHEN NOT MATCHED BY TARGET THEN INSERT ( C_INTEZMENYID, C_OSZTALYCSOPORTID, C_OSZTALYBONTASID, C_EVFOLYAMTIPUSA, C_OSZTALYCSOPORTLETSZAM, C_OSZTALYCSOPORTNEV, C_TERVEZETTLETSZAM, C_CSOPORTTIPUS, C_OSZTALYCSOPORTTIPUS, C_TANEVNEV, C_FELADATELLATASIHELYID, C_VEGZOSEVFOLYAM, LASTCHANGED, TOROLT, CREATED ) VALUES ( src.C_INTEZMENYID, src.C_OSZTALYCSOPORTID, src.C_OSZTALYBONTASID, src.C_EVFOLYAMTIPUSA, src.C_OSZTALYCSOPORTLETSZAM, src.C_OSZTALYCSOPORTNEV, src.C_TERVEZETTLETSZAM, src.C_CSOPORTTIPUS, src.C_OSZTALYCSOPORTTIPUS, src.C_TANEVNEV, src.C_FELADATELLATASIHELYID, src.C_VEGZOSEVFOLYAM, GETDATE(), 'F', GETDATE() ) WHEN NOT MATCHED BY SOURCE AND trg.TOROLT = 'F' THEN UPDATE SET trg.LASTCHANGED = GETDATE(), trg.TOROLT = 'T' ; END GO