kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20190207154840_OM_2125/uspGetBukasraAlloTanulok.sql
2024-03-13 00:33:46 +01:00

130 lines
No EOL
3.6 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetBukasraAlloTanulok
GO
CREATE PROCEDURE uspGetBukasraAlloTanulok
@pIntezmenyId int
,@pTanevId int
,@pOsztalyCsoportIdXML XML = NULL
AS
BEGIN
DECLARE @ocsId int
DECLARE @OsztalyCsoport TABLE(Id int)
IF @pOsztalyCsoportIdXML IS NOT NULL
BEGIN
DECLARE @ValasztottOsztalyok TABLE(Id int)
INSERT INTO @ValasztottOsztalyok(Id)
SELECT Data FROM fnConvertXmlIntListToTable(@pOsztalyCsoportIdXML, 'a', 'b')
INSERT INTO @OsztalyCsoport
SELECT Id
FROM @ValasztottOsztalyok
END
ELSE BEGIN
INSERT INTO @OsztalyCsoport
SELECT osztalyok.OsztalyId FROM fnGetDokumentumOsztalyokTanevenkent (@pTanevId) osztalyok
END
DECLARE ocsCur CURSOR FOR
SELECT Id FROM @OsztalyCsoport
CREATE TABLE #ErtekelesTemp
(
[OMKod] NVARCHAR(MAX)
,[SzulHelyIdoAnyjaNeve] NVARCHAR(MAX)
,[TanuloNev] NVARCHAR(MAX)
,[OsztalyCsoportNev] NVARCHAR(MAX)
,[TantargyNev] NVARCHAR(MAX)
,[Atlag] DECIMAL(10,2)
,[TanarNeve] NVARCHAR(MAX)
)
CREATE TABLE #CsoportNevek (OsztalyCsoportNeve nvarchar(200))
OPEN ocsCur
FETCH NEXT FROM ocsCur INTO @ocsId
WHILE @@FETCH_STATUS = 0
BEGIN
TRUNCATE TABLE #ErtekelesTemp
INSERT INTO #ErtekelesTemp
(
[OMKod]
,[SzulHelyIdoAnyjaNeve]
,[TanuloNev]
,[OsztalyCsoportNev]
,[TantargyNev]
,[Atlag]
,[TanarNeve]
)
SELECT
tanulo.C_OKTATASIAZONOSITO AS OMKod
,tanulo.C_SZULETESIHELY + ', ' + CAST(FORMAT(tanulo.C_SZULETESIDATUM, 'yyyy.MM.dd.') AS nvarchar(200)) + ', '+ tanulo.C_ANYJANEVE AS SzulHelyIdoAnyjaNeve
,tanulo.C_NYOMTATASINEV AS TanuloNev
,osztalyCsoport.C_NEV AS OsztalyCsoportNev
,ertekeles.TantargyNev AS TantargyNev
,ROUND(SUM(CAST(ertekeles.ErtekelesOsztalyzatValue AS FLOAT) * CAST(ISNULL(tanariAtlagSuly.C_SULY, 100) AS FLOAT) / 100) / SUM(CAST(ISNULL(tanariAtlagSuly.C_SULY, 100) AS FLOAT) / 100), 2) AS Atlag
,tanar.C_NYOMTATASINEV AS TanarNeve
FROM
[fnGetDokumentumErtekelesekOsztalyonkent] (@pTanevId, @ocsId, DEFAULT, DEFAULT, 1, DEFAULT) ertekeles
LEFT JOIN T_TANARIATLAGSULY tanariAtlagSuly ON
tanariAtlagSuly.C_TANEVID = @pTanevId
AND tanariAtlagSuly.TOROLT = 'F'
AND tanariAtlagSuly.C_ERTEKELESMODID = ertekeles.ErtekelesModjaId
INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON
osztalyCsoport.C_TANEVID = @pTanevId
AND osztalyCsoport.TOROLT = 'F'
AND osztalyCsoport.ID = ertekeles.OsztalyCsoportId
INNER JOIN T_FELHASZNALO_OSSZES tanulo ON
tanulo.C_TANEVID = @pTanevId
AND tanulo.TOROLT = 'F'
AND tanulo.ID = ertekeles.TanuloId
INNER JOIN T_FELHASZNALO_OSSZES tanar ON
tanar.C_TANEVID = @pTanevId
AND tanar.TOROLT = 'F'
AND tanar.ID = ertekeles.ErtekeloId
WHERE
ertekeles.ErtekelesOsztalyzatValue IS NOT NULL
GROUP BY
tanulo.C_OKTATASIAZONOSITO
,tanulo.C_SZULETESIHELY
,tanulo.C_SZULETESIDATUM
,tanulo.C_ANYJANEVE
,tanulo.C_NYOMTATASINEV
,osztalyCsoport.C_NEV
,ertekeles.TantargyNev
,tanar.C_NYOMTATASINEV
HAVING
ROUND(SUM(CAST(ertekeles.ErtekelesOsztalyzatValue AS FLOAT) * CAST(ISNULL(tanariAtlagSuly.C_SULY, 100) AS FLOAT) / 100) / SUM(CAST(ISNULL(tanariAtlagSuly.C_SULY, 100) AS FLOAT) / 100), 2) < 2
IF EXISTS(SELECT 1 FROM #ErtekelesTemp)
BEGIN
SELECT
tmp.OMKod
,tmp.SzulHelyIdoAnyjaNeve
,tmp.TanuloNev
,tmp.OsztalyCsoportNev
,tmp.TantargyNev
,tmp.Atlag
,tmp.TanarNeve
FROM #ErtekelesTemp tmp ORDER BY [TanuloNev],[TantargyNev]
INSERT INTO #CsoportNevek (OsztalyCsoportNeve)
SELECT top 1 [OsztalyCsoportNev] FROM #ErtekelesTemp
END
FETCH NEXT FROM ocsCur INTO @ocsId
END
CLOSE ocsCur
DEALLOCATE ocsCur
SELECT * FROM #CsoportNevek
DROP TABLE #ErtekelesTemp
DROP TABLE #CsoportNevek
END
GO