DROP PROCEDURE IF EXISTS uspUpdateAtlagByOsztalyCsoportTantargy GO CREATE PROCEDURE uspUpdateAtlagByOsztalyCsoportTantargy @pTantargyId int = null ,@pTanevId int ,@pIntezmenyId int ,@pFelhasznaloId int ,@pOsztalyCsoportId int AS BEGIN SELECT er.C_TANULOID, er.C_TANTARGYID, SUM(d.C_VALUE) AS C_OSZTALYZATOSSZEGE, COUNT(1) AS C_OSZTALYZATSZAMA, SUM(d.C_VALUE * em.C_SULY) AS C_SULYOZOTTOSZTALYZATOSSZEGE, SUM(em.C_SULY) AS C_SULYOZOTTOSZTALYZATSZAMA, feh.C_OKTATASINEVELESIFELADATTIPUS AS C_OKTATASNEVELESIFELADATID INTO #Source FROM T_TANULOERTEKELES_OSSZES er INNER JOIN T_ERTEKELESMOD_OSSZES em ON em.ID = er.C_ERTEKELESMODID AND em.C_ALTANEVID = er.C_TANEVID INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = er.C_ERTEKELESOSZTALYZATID AND d.C_TANEVID = er.C_TANEVID INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = er.C_OSZTALYCSOPORTID INNER JOIN T_FELADATELLATASIHELY_OSSZES feh ON feh.ID = ocs.C_FELADATELLATASIHELYID WHERE er.C_TANEVID = @pTanevId AND er.C_INTEZMENYID = @pIntezmenyId AND er.C_TIPUSID = 1518 AND ocs.ID = @pOsztalyCsoportId AND er.TOROLT = 'F' AND (@pTantargyId IS NULL OR er.C_TANTARGYID = @pTantargyId) GROUP BY er.C_TANULOID, er.C_TANTARGYID, feh.C_OKTATASINEVELESIFELADATTIPUS DECLARE @pOktatasNevelesiFeladatId int SELECT @pOktatasNevelesiFeladatId = C_OKTATASINEVELESIFELADATTIPUS FROM T_FELADATELLATASIHELY_OSSZES WHERE ID = (SELECT C_FELADATELLATASIHELYID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyCsoportId) MERGE INTO T_TANULOTANTARGYATLAG_OSSZES AS trg USING #Source AS src ON trg.C_TANULOID = src.C_TANULOID AND trg.C_TANTARGYID = src.C_TANTARGYID AND trg.C_OKTATASNEVELESIFELADATID = src.C_OKTATASNEVELESIFELADATID WHEN MATCHED THEN UPDATE SET C_SULYOZOTTOSZTALYZATOSSZEGE = src.C_SULYOZOTTOSZTALYZATOSSZEGE ,C_SULYOZOTTOSZTALYZATSZAMA = src.C_SULYOZOTTOSZTALYZATSZAMA ,C_OSZTALYZATOSSZEGE = src.C_OSZTALYZATOSSZEGE ,C_OSZTALYZATSZAMA = src.C_OSZTALYZATSZAMA ,MODIFIER = @pFelhasznaloId WHEN NOT MATCHED BY TARGET THEN INSERT (C_OSZTALYZATOSSZEGE ,C_OSZTALYZATSZAMA ,C_SULYOZOTTOSZTALYZATOSSZEGE ,C_SULYOZOTTOSZTALYZATSZAMA ,C_TANTARGYID ,C_TANULOID ,C_INTEZMENYID ,C_TANEVID ,TOROLT ,SERIAL ,LASTCHANGED ,CREATED ,MODIFIER ,CREATOR ,C_OKTATASNEVELESIFELADATID) VALUES (src.C_OSZTALYZATOSSZEGE ,src.C_OSZTALYZATSZAMA ,src.C_SULYOZOTTOSZTALYZATOSSZEGE ,src.C_SULYOZOTTOSZTALYZATSZAMA ,src.C_TANTARGYID ,src.C_TANULOID ,@pIntezmenyId ,@pTanevId ,'F' ,0 ,GETDATE() ,GETDATE() ,0 ,@pFelhasznaloId ,@pOktatasNevelesiFeladatId) WHEN NOT MATCHED BY SOURCE AND trg.C_TANEVID = @pTanevId AND (@pTantargyId IS NULL OR trg.C_TANTARGYID = @pTantargyId) AND trg.C_OKTATASNEVELESIFELADATID = @pOktatasNevelesiFeladatId THEN DELETE; END GO