96 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
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
 |