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 INSERT INTO @OsztalyCsoport(Id) SELECT Data FROM fnConvertXmlIntListToTable(@pOsztalyCsoportIdXML, 'a', 'b') END ELSE BEGIN INSERT INTO @OsztalyCsoport SELECT osztalyok.OsztalyId FROM fnGetDokumentumOsztalyokTanevenkent (@pTanevId) osztalyok END DECLARE ocsCur CURSOR FOR SELECT DISTINCT k.ID FROM @OsztalyCsoport ocs CROSS APPLY fnGetKapcsolodoOsztalycsoportok(ocs.ID, DEFAULT) k 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)) CREATE TABLE #OsszErtekeles ( ErtekelesId INT NOT NULL, Datum DATE, TipusId INT, ErtekelesSzoveg NVARCHAR(MAX), ErtekelesSzovegRovidNev NVARCHAR(3), ErtekelesOsztalyzatId INT, ErtekelesOsztalyzatValue INT, ErtekelesOsztalyzatNev NVARCHAR(MAX), ErtekelesSzazalek NVARCHAR(MAX), MagatartasOsztalyzatId INT, MagatartasOsztalyzatValue INT, MagatartasOsztalyzatNev NVARCHAR(MAX), MagatartasSzoveg NVARCHAR(MAX), MagatartasSzovegRovidNev NVARCHAR(3), MagatartasErtekId INT, MagatartasErtek NVARCHAR(MAX), MagatartasErtekOsztalyzatkent INT, SzorgalomOsztalyzatId INT, SzorgalomOsztalyzatValue INT, SzorgalomOsztalyzatNev NVARCHAR(MAX), SzorgalomSzoveg NVARCHAR(MAX), SzorgalomSzovegRovidNev NVARCHAR(3), SzorgalomErtekId INT, SzorgalomErtek NVARCHAR(MAX), SzorgalomErtekOsztalyzatkent INT, TanuloId INT, TanuloCsoportId INT, OsztalyCsoportId INT, TantargyId INT, TantargyNevZarojellel NVARCHAR(MAX), TantargyNevNyomtatvanyban NVARCHAR(MAX), TantargyNev NVARCHAR(MAX), TantargyAngolNev NVARCHAR(MAX), TantargyNemetNev NVARCHAR(MAX), TargyKategoriaId INT, FotargyE CHAR(1), Altantargy CHAR(1), FotargyId INT, ErtekelesTema NVARCHAR(MAX), ErtekeloId INT, ErtekelesModjaId INT, IsMagatartasSzorgalom CHAR(1), Jeloles NVARCHAR(MAX), JelolesAndErtekelesTema NVARCHAR(MAX), RogzitesDatum DATE ) OPEN ocsCur FETCH NEXT FROM ocsCur INTO @ocsId WHILE @@FETCH_STATUS = 0 BEGIN TRUNCATE TABLE #OsszErtekeles INSERT INTO #OsszErtekeles ( ErtekelesId ,Datum ,TipusId ,ErtekelesSzoveg ,ErtekelesSzovegRovidNev ,ErtekelesOsztalyzatId ,ErtekelesOsztalyzatValue ,ErtekelesOsztalyzatNev ,ErtekelesSzazalek ,MagatartasOsztalyzatId ,MagatartasOsztalyzatValue ,MagatartasOsztalyzatNev ,MagatartasSzoveg ,MagatartasSzovegRovidNev ,MagatartasErtekId ,MagatartasErtek ,MagatartasErtekOsztalyzatkent ,SzorgalomOsztalyzatId ,SzorgalomOsztalyzatValue ,SzorgalomOsztalyzatNev ,SzorgalomSzoveg ,SzorgalomSzovegRovidNev ,SzorgalomErtekId ,SzorgalomErtek ,SzorgalomErtekOsztalyzatkent ,TanuloId ,TanuloCsoportId ,OsztalyCsoportId ,TantargyId ,TantargyNevZarojellel ,TantargyNevNyomtatvanyban ,TantargyNev ,TantargyAngolNev ,TantargyNemetNev ,TargyKategoriaId ,FotargyE ,Altantargy ,FotargyId ,ErtekelesTema ,ErtekeloId ,ErtekelesModjaId ,IsMagatartasSzorgalom ,Jeloles ,JelolesAndErtekelesTema ,RogzitesDatum ) SELECT ErtekelesId ,Datum ,TipusId ,ErtekelesSzoveg ,ErtekelesSzovegRovidNev ,ErtekelesOsztalyzatId ,ErtekelesOsztalyzatValue ,ErtekelesOsztalyzatNev ,ErtekelesSzazalek ,MagatartasOsztalyzatId ,MagatartasOsztalyzatValue ,MagatartasOsztalyzatNev ,MagatartasSzoveg ,MagatartasSzovegRovidNev ,MagatartasErtekId ,MagatartasErtek ,MagatartasErtekOsztalyzatkent ,SzorgalomOsztalyzatId ,SzorgalomOsztalyzatValue ,SzorgalomOsztalyzatNev ,SzorgalomSzoveg ,SzorgalomSzovegRovidNev ,SzorgalomErtekId ,SzorgalomErtek ,SzorgalomErtekOsztalyzatkent ,TanuloId ,TanuloCsoportId ,OsztalyCsoportId ,TantargyId ,TantargyNevZarojellel ,TantargyNevNyomtatvanyban ,TantargyNev ,TantargyAngolNev ,TantargyNemetNev ,TargyKategoriaId ,FotargyE ,Altantargy ,FotargyId ,ErtekelesTema ,ErtekeloId ,ErtekelesModjaId ,IsMagatartasSzorgalom ,Jeloles ,JelolesAndErtekelesTema ,RogzitesDatum FROM [fnGetDokumentumErtekelesekOsztalyonkent] (@pTanevId, @ocsId, 1518, DEFAULT, 1, DEFAULT, 1) 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 ,STUFF(( SELECT DISTINCT ', ' + f.C_NYOMTATASINEV FROM #OsszErtekeles INNER JOIN T_FELHASZNALO_OSSZES AS f ON f.ID = #OsszErtekeles.ErtekeloId AND f.C_TANEVID = @pTanevId WHERE (TantargyId = ertekeles.TantargyId) AND (TanuloId = ertekeles.TanuloId) FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)'), 1, 2, '') AS TanarNeve FROM #OsszErtekeles 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 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 ,ertekeles.TantargyId ,ertekeles.TanuloId 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 DROP TABLE #OsszErtekeles END GO