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