87 lines
3.5 KiB
Transact-SQL
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
|