kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspUpdateAtlagByOsztalyCsoportTantargy.sql
2024-03-13 00:33:46 +01:00

87 lines
3.5 KiB
Transact-SQL

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