DROP PROCEDURE IF EXISTS [dbo].[uspNyomtatvany_Excel_IdoszakiOsztalyStatisztika] GO CREATE PROCEDURE [dbo].[uspNyomtatvany_Excel_IdoszakiOsztalyStatisztika] @pTanevId int ,@pOsztalyId int ,@pIntezmenyId int ,@pErtekelestipusaId int ,@pLezaroNaptipusId int ,@pMulasztasTipusIdKeses int = 1499 ,@pMulasztasTipusIdHianyzas int = 1500 ,@pTanevrendjeTanevKezdeteNaptipusId int = 1394 --Tanévrendje első nap típus ,@pTanoraiDicseretTipusId int = 1536 -- Tanórai dicséret ,@pFelszereleshianyTipusId int = 6324 -- Felszereléshiány ,@pHaziFeladatHianyTipusId int = 6325 -- Házi feladat hiány ,@pAtsoroltTanuloAdatok int = 1 ,@pOsztalyInditasaId int = 1 ,@pElmeletgyakorlat bit = 0 ,@pOsztalyzatTipusTypeID int = 44 ,@pMagatartasErtekelesTipusTypeID int = 50 ,@pSzorgalomErtekelesTipusTypeID int = 51 AS BEGIN SET NOCOUNT ON; --Const DECLARE @ElsoFelveVege int = 1400 ,@IneVege int = 1403 ,@IIIneVege int = 1404 ,@UtolsoTanitasiNap int = 1395 ,@VegzosUtolsoTanitasiNap int = 1402 ,@kesespercHianyzashoz int = 45 ,@kesespercGyakHianyzashoz int = 45 ,@iskolaErdekuParam int = 1683 ,@idoszakEleje date ,@idoszakVege date --Iskolaerdeku tavollet szamit DECLARE @iskolaErdekuSzamit bit = [dbo].fnGetRendszerbeallitasEnumBool(@iskolaErdekuParam, @pIntezmenyId, @pTanevId) --Osztaly jellemzo ,@vegzosEvfolyamu bit = (SELECT IIF(C_VEGZOSEVFOLYAM = 'T', 1, 0) FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyId) --Osztalyjellemzok alapjan a lezaro naptipus csereje SET @pLezaroNaptipusId = ( SELECT CASE WHEN (@pOsztalyInditasaId = 0 OR @pOsztalyInditasaId = 2) AND @vegzosEvfolyamu = 1 AND @pLezaroNaptipusId = @UtolsoTanitasiNap THEN @VegzosUtolsoTanitasiNap WHEN (@pOsztalyInditasaId = 0 OR @pOsztalyInditasaId = 2) THEN @pLezaroNaptipusId WHEN @pLezaroNaptipusId = @ElsoFelveVege THEN @UtolsoTanitasiNap WHEN @pLezaroNaptipusId = @UtolsoTanitasiNap THEN @ElsoFelveVege WHEN @pLezaroNaptipusId = @IneVege THEN @IIIneVege WHEN @pLezaroNaptipusId = @IIIneVege THEN @IneVege END ) CREATE TABLE #aktualisOsztalyCsoportok ( OSZTALYCSOPORTID int ) CREATE TABLE #szurtErtekeles ( T_TANULOERTEKELES_ID int PRIMARY KEY ,C_TANULOID int ,ERTEKELES nvarchar(max) ,ERTEKELES_SZOVEG_MEGJEGYZES nvarchar(max) ,C_ERTEKELESDATUM DATETIME ,C_TANTARGYID int ,TANTARGY_NEV nvarchar(255) COLLATE DATABASE_DEFAULT ,TARGYKATEGORIA_NEV nvarchar(255) COLLATE DATABASE_DEFAULT ,TARGYKATEGORIA_SORSZAM int ,T_TANTARGY_C_FOTARGYE char(1) COLLATE DATABASE_DEFAULT ,T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN char(1) COLLATE DATABASE_DEFAULT ,C_OSZTALYCSOPORTID int ,RENDEZ0 int ,RENDEZ1 int ,RENDEZ2 nvarchar(255) COLLATE DATABASE_DEFAULT ,RENDEZ3 int ,RENDEZ4 int ,RENDEZ5 nvarchar(255) COLLATE DATABASE_DEFAULT ) CREATE TABLE #szurtMulasztas ( TIPUS_CHAR char(1) ,C_TIPUS int ,C_IGAZOLT char(1) COLLATE DATABASE_DEFAULT ,C_TANULOID int ,C_TANULOCSOPORTID int ,C_GYAKORLATI char(1) COLLATE DATABASE_DEFAULT ,KESESPERC int ,MULASZTASOK_SZAMA int ,HOZOTTIGAZOLTMULTASZTASOK_SZAMA int ,HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA int ,FELDOLGOZATLANOK_SZAMA int ) CREATE TABLE #Tanulok ( TanuloId int ,TanulocsoportId int PRIMARY KEY ) CREATE TABLE #Tipusok ( Tipus_Char char(1) ,Igazolt char(1) ,Tipus int ,Gyakorlati char(1) ) SELECT TOP 1 @idoszakEleje = ISNULL(tr.C_DATUM,te.C_KEZDONAP) FROM T_TANEV_OSSZES te LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_TANEVID = te.ID AND tr.TOROLT='F' AND tr.C_NAPTIPUSA = @pTanevrendjeTanevKezdeteNaptipusId LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON ocstr.C_TANEVRENDJEID = tr.ID AND (ocstr.C_OSZTALYCSOPORTID IS NULL OR ocstr.C_OSZTALYCSOPORTID = @pOsztalyId) WHERE te.ID = @pTanevId ORDER BY ocstr.C_OSZTALYCSOPORTID DESC SELECT @idoszakVege= ISNULL( ( SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES tr LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID AND (ocstr.C_OSZTALYCSOPORTID IS NULL OR ocstr.C_OSZTALYCSOPORTID = @pOsztalyId) WHERE tr.C_TANEVID = @pTanevId AND tr.C_NAPTIPUSA = @pLezaroNaptipusId AND tr.TOROLT = 'F' ORDER BY ocstr.C_OSZTALYCSOPORTID DESC ) ,GETDATE() ) DECLARE @utolsoTanitasiNapDatum date SELECT @utolsoTanitasiNapDatum = UtolsoTanitasiNap FROM fnGetOsztalyCsoportokUtolsoTanitasiNap(@pTanevId, @pOsztalyId) IF @pAtsoroltTanuloAdatok IN (0,1) BEGIN INSERT INTO #aktualisOsztalyCsoportok (OSZTALYCSOPORTID) SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@pOsztalyId, @pTanevId, DEFAULT, DEFAULT) END ELSE BEGIN INSERT INTO #aktualisOsztalyCsoportok (OSZTALYCSOPORTID) SELECT KapcsOszt.ID FROM fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyId, @idoszakEleje, @utolsoTanitasiNapDatum) KapcsOszt WHERE (ID IN ( SELECT ID FROM T_OSZTALY_OSSZES UNION SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId)) ) ) END -- ÉRTÉKELÉS insert INSERT INTO #szurtErtekeles ( T_TANULOERTEKELES_ID ,C_TANULOID ,ERTEKELES ,ERTEKELES_SZOVEG_MEGJEGYZES ,C_ERTEKELESDATUM ,C_TANTARGYID ,TANTARGY_NEV ,TARGYKATEGORIA_NEV ,TARGYKATEGORIA_SORSZAM ,T_TANTARGY_C_FOTARGYE ,T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN ,C_OSZTALYCSOPORTID ,RENDEZ0 ,RENDEZ1 ,RENDEZ2 ,RENDEZ3 ,RENDEZ4 ,RENDEZ5 ) SELECT ROW_NUMBER() OVER (ORDER BY TanuloId) ,TanuloId ,COALESCE( IIF(ErtekelesOsztalyzatValue IS NOT NULL, CONCAT( IIF(IsTanulmanyiatlagbanemszamit = 'T','"',''), CAST(ErtekelesOsztalyzatValue AS nvarchar(max)), IIF(IsTanulmanyiatlagbanemszamit = 'T','"','') ), NULL ), IIF(ErtekelesSzoveg IS NOT NULL, IIF(ErtekelesSzovegRovidNev IS NOT NULL, '"' + ErtekelesSzovegRovidNev + '"', 'sz'), NULL), '%') ,ISNULL(ErtekelesSzoveg, ISNULL(ErtekelesSzazalek + ' ', '') + ISNULL(ErtekelesTema, '')) ,Datum ,TantargyId ,COALESCE(TantargyNevNyomtatvanyban, TantargyNev) AS TANTARGY_NEV ,dib.C_NAME ,dib.C_VALUE ,FotargyE ,Altantargy ,OsztalyCsoportId ,RENDEZ0 ,RENDEZ1 ,RENDEZ2 ,RENDEZ3 ,RENDEZ4 ,RENDEZ5 FROM fnGetDokumentumErtekelesekOsztalyonkent (@pTanevId, @pOsztalyId, @pErtekelestipusaId, DEFAULT, DEFAULT, @pAtsoroltTanuloAdatok, DEFAULT, @pOsztalyzatTipusTypeID, @pMagatartasErtekelesTipusTypeID, @pSzorgalomErtekelesTipusTypeID) AS ERTEKELESEK LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dib ON dib.ID = ERTEKELESEK.TargyKategoriaId AND dib.C_TANEVID = @pTanevId WHERE TantargyId IS NOT NULL AND (FotargyE = 'T' OR Altantargy = 'T') --MULASZTÁS insert INSERT INTO #Tipusok (Tipus_Char,Igazolt,Tipus,Gyakorlati)VALUES ('H','T',1500,'T'),('H','F',1500,'T'),('K','T',1499,'T'),('K','F',1499,'T'), ('H','T',1500,'F'),('H','F',1500,'F'),('K','T',1499,'F'),('K','F',1499,'F') ,('H','-',1500,'T'),('H','-',1500,'F'),('K','-',1499,'T'),('K','-',1499,'F') INSERT INTO #Tanulok SELECT DISTINCT tcs.C_TANULOID ,x.ID TanuloCsoportId FROM T_TANULOCSOPORT_OSSZES tcs CROSS APPLY (SELECT TOP 1 belepes.ID FROM T_TANULOCSOPORT_OSSZES belepes WHERE belepes.C_TANULOID = tcs.C_TANULOID AND belepes.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID AND belepes.TOROLT = 'F' AND belepes.C_TANEVID = tcs.C_TANEVID ORDER BY C_BELEPESDATUM desc) x WHERE tcs.C_OSZTALYCSOPORTID = @pOsztalyId AND tcs.C_BELEPESDATUM <= @idoszakVege AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @idoszakVege) AND tcs.TOROLT = 'F' AND tcs.C_TANEVID = @pTanevId INSERT INTO #szurtMulasztas (TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, C_TANULOCSOPORTID, C_GYAKORLATI,KESESPERC,MULASZTASOK_SZAMA, HOZOTTIGAZOLTMULTASZTASOK_SZAMA, HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA, FELDOLGOZATLANOK_SZAMA) SELECT Tipus_Char, Tipus,Igazolt,TanuloId, TanulocsoportId,Gyakorlati,0,0,0,0,0 FROM #Tanulok CROSS APPLY #Tipusok UPDATE szm SET KESESPERC = m.KesesPercben ,MULASZTASOK_SZAMA = m.MULASZTASOK_SZAMA ,HOZOTTIGAZOLTMULTASZTASOK_SZAMA = ISNULL(IIF(szm.C_IGAZOLT = 'T',hianyzas.HOZOTTIGAZOLTHIANYZAS,0),0) ,HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA = ISNULL(IIF(szm.C_IGAZOLT = 'F',hianyzas.HOZOTTIGAZOLATLANHIANYZAS,0),0) FROM #szurtMulasztas szm LEFT JOIN ( SELECT m.Tipusa ,m.Igazolt ,m.TanuloId ,m.TanuloCsoportId ,m.Gyakorlati ,SUM(ISNULL(KesesPercben,0)) as KesesPercben ,ISNULL(COUNT(m.Tipusa),0) AS MULASZTASOK_SZAMA FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @iskolaErdekuSzamit, 0, IIF(@pAtsoroltTanuloAdatok > 0, 1, 0), @idoszakEleje, @idoszakVege, DEFAULT) m WHERE m.Igazolt IS NOT NULL AND m.Tipusa BETWEEN @pMulasztasTipusIdKeses AND @pMulasztasTipusIdHianyzas GROUP BY m.Tipusa, m.Igazolt, m.TanuloId, m.TanuloCsoportId, m.Gyakorlati ) m ON m.Gyakorlati = szm.C_GYAKORLATI AND m.Tipusa = szm.C_TIPUS AND m.Igazolt = szm.C_IGAZOLT AND m.TanuloId = szm.C_TANULOID AND m.TanuloCsoportId = szm.C_TANULOCSOPORTID LEFT JOIN ( SELECT tcs.C_TANULOID ,SUM(tta.C_HOZOTTIGAZOLTHIANYZAS) as HOZOTTIGAZOLTHIANYZAS ,SUM(tta.C_HOZOTTIGAZOLATLANHIANYZAS) as HOZOTTIGAZOLATLANHIANYZAS FROM T_TANULOCSOPORT_OSSZES tcs INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.C_TANULOCSOPORTID = tcs.ID AND tta.C_TANEVID = @pTanevId AND tta.TOROLT = 'F' WHERE tcs.C_OSZTALYCSOPORTID = @pOsztalyId AND tcs.C_TANEVID = @pTanevId AND tcs.C_BELEPESDATUM < @idoszakVege AND tcs.TOROLT = 'F' GROUP BY tcs.C_TANULOID ) hianyzas on hianyzas.C_TANULOID = szm.C_TANULOID AND szm.TIPUS_CHAR = 'H' AND szm.C_GYAKORLATI = 'F' UPDATE szm SET FELDOLGOZATLANOK_SZAMA = IIF(m.Tipusa = 1500, ISNULL(m.MULASZTASOK_SZAMA, 0), ISNULL(m.KesesPercben, 0)) FROM #szurtMulasztas szm LEFT JOIN ( SELECT m.Tipusa ,m.Igazolt ,m.TanuloId ,m.TanuloCsoportId ,m.Gyakorlati ,SUM(ISNULL(KesesPercben,0)) as KesesPercben ,ISNULL(COUNT(m.Tipusa),0) AS MULASZTASOK_SZAMA FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @iskolaErdekuSzamit, 0, IIF(@pAtsoroltTanuloAdatok > 0, 1, 0), @idoszakEleje, @idoszakVege, DEFAULT) m WHERE m.Igazolt IS NULL AND m.Tipusa BETWEEN @pMulasztasTipusIdKeses AND @pMulasztasTipusIdHianyzas GROUP BY m.Tipusa, m.Igazolt, m.TanuloId, m.TanuloCsoportId, m.Gyakorlati ) m ON m.Gyakorlati = szm.C_GYAKORLATI AND m.Tipusa = szm.C_TIPUS AND (m.Igazolt IS NULL AND szm.C_IGAZOLT='-') AND m.TanuloId = szm.C_TANULOID AND m.TanuloCsoportId = szm.C_TANULOCSOPORTID --==================== SELECTEK ========================== -- OSZTÁLY SELECT o.ID ,ocs.C_NEV ,ocs.C_VEGZOSEVFOLYAM ,fh.C_NYOMTATASINEV ,o.C_OSZTALYNAPLOMEGNYITASA ,o.C_OSZTALYNAPLOZARASA ,o.C_OSZTALYFONOKID FROM T_OSZTALY_OSSZES o INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID AND ocs.TOROLT='F' LEFT JOIN T_FELHASZNALO_OSSZES fh ON o.C_OSZTALYFONOKID = fh.ID AND fh.TOROLT='F' INNER JOIN T_FELADATELLATASIHELY_OSSZES felh ON felh.ID = ocs.C_FELADATELLATASIHELYID AND felh.TOROLT='F' WHERE ocs.ID = @pOsztalyId --TANULÓK LISTA SELECT fh.ID as C_TANULOID ,fh.C_NYOMTATASINEV as TANULONEV ,fh.C_ANYJANEVE as ANYJANEVE ,fh.C_OKTATASIAZONOSITO as OKTATASIAZONOSITO FROM T_FELHASZNALO_OSSZES fh INNER JOIN #Tanulok AS ot ON ot.TANULOID = fh.ID WHERE fh.TOROLT='F' ORDER BY fh.C_NYOMTATASINEV; -- TANTÁRGYAK (TANTÁRGYFELOSZTÁS, ÉRTÉKELÉS) SELECT DISTINCT C_TANTARGYID ,TANTARGY_NEV ,C_FOTARGYE ,C_ALTANTARGYKENTNYOMTATVANYBAN ,RENDEZ0 ,RENDEZ1 ,RENDEZ2 ,RENDEZ3 ,RENDEZ4 ,RENDEZ5 FROM ( SELECT DISTINCT f.C_TANTARGYID ,COALESCE(tgy.C_NEVNYOMTATVANYBAN, tgy.C_NEV) as TANTARGY_NEV ,tgy.C_FOTARGYE ,tgy.C_ALTANTARGYKENTNYOMTATVANYBAN ,tgy.C_SORSZAM as RENDEZ0 ,CASE WHEN tgy.C_FOTARGYID IS NULL THEN ISNULL(TargyKategoriaDictionary.C_ORDER, 10000) ELSE ISNULL(FotargyKategoriaDictionary.C_ORDER, 10000) END as RENDEZ1 ,COALESCE(FotargyTable.C_NEVNYOMTATVANYBAN, FotargyTable.C_NEV, tgy.C_NEV) as RENDEZ2 ,ISNULL(tgy.C_FOTARGYID, tgy.ID) as RENDEZ3 ,tgy.C_FOTARGYID as RENDEZ4 ,ISNULL(tgy.C_NEVNYOMTATVANYBAN, tgy.C_NEV) as RENDEZ5 FROM T_FOGLALKOZAS_OSSZES f INNER JOIN #aktualisOsztalyCsoportok ocs ON ocs.OSZTALYCSOPORTID = f.C_OSZTALYCSOPORTID INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = f.C_TANTARGYID AND tgy.C_TANEVID = @pTanevId LEFT JOIN T_DICTIONARYITEMBASE_OSSZES TargyKategoriaDictionary ON TargyKategoriaDictionary.Id = tgy.C_TARGYKATEGORIA AND TargyKategoriaDictionary.TOROLT = 'F' AND TargyKategoriaDictionary.C_TANEVID = @pTanevId LEFT JOIN T_TANTARGY_OSSZES FotargyTable ON tgy.C_FOTARGYID = FotargyTable.ID LEFT JOIN T_DICTIONARYITEMBASE_OSSZES FotargyKategoriaDictionary ON FotargyKategoriaDictionary.ID = FotargyTable.C_TARGYKATEGORIA AND FotargyKategoriaDictionary.TOROLT = 'F' AND FotargyKategoriaDictionary.C_TANEVID = FotargyTable.C_TANEVID WHERE f.TOROLT = 'F' AND (tgy.C_FOTARGYE = 'T' OR tgy.C_ALTANTARGYKENTNYOMTATVANYBAN = 'T') UNION SELECT DISTINCT C_TANTARGYID ,TANTARGY_NEV ,T_TANTARGY_C_FOTARGYE AS C_FOTARGYE ,T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN AS C_ALTANTARGYKENTNYOMTATVANYBAN ,RENDEZ0 ,RENDEZ1 ,RENDEZ2 ,RENDEZ3 ,RENDEZ4 ,RENDEZ5 FROM #szurtErtekeles WHERE (@pAtsoroltTanuloAdatok = 2 OR C_OSZTALYCSOPORTID IN (SELECT OSZTALYCSOPORTID FROM #aktualisOsztalyCsoportok)) ) AS TANTARGYAK ORDER BY RENDEZ0,RENDEZ1,RENDEZ2,RENDEZ3,RENDEZ4,RENDEZ5,TANTARGY_NEV; -- ÉRTÉKELÉS lista SELECT * FROM #szurtErtekeles; --MAGATARTÁS-SZORGALOM SELECT ROW_NUMBER() OVER (ORDER BY TanuloId) AS ID ,TanuloId AS C_TANULOID ,COALESCE(CAST(MagatartasOsztalyzatValue AS nvarchar(6)), CAST(MagatartasErtekOsztalyzatkent AS nvarchar(6)), IIF(MagatartasSzovegRovidNev IS NOT NULL, '"' + MagatartasSzovegRovidNev + '"', 'sz')) AS MagatartasOsztalyzat ,MagatartasErtek ,COALESCE(CAST(SzorgalomOsztalyzatValue AS nvarchar(6)), CAST(SzorgalomErtekOsztalyzatkent AS nvarchar(6)), IIF(SzorgalomSzovegRovidNev IS NOT NULL, '"' + SzorgalomSzovegRovidNev + '"', 'sz')) AS SzorgalomOsztalyzat ,SzorgalomErtek ,ErtekelesSzoveg AS C_ERTEKELESSZOVEG ,Datum AS C_ERTEKELESDATUM ,'F' AS TOROLT -- y tho? FROM fnGetDokumentumErtekelesekOsztalyonkent (@pTanevId, @pOsztalyId, @pErtekelestipusaId, DEFAULT, DEFAULT, @pAtsoroltTanuloAdatok, DEFAULT, @pOsztalyzatTipusTypeID, @pMagatartasErtekelesTipusTypeID, @pSzorgalomErtekelesTipusTypeID) AS ERTEKELESEK WHERE TantargyId IS NULL AND (@pAtsoroltTanuloAdatok > 0 OR OsztalyCsoportId IN (SELECT OSZTALYCSOPORTID FROM #aktualisOsztalyCsoportok)); --MULASZTÁS stat IF @pElmeletgyakorlat=0 BEGIN WITH cte AS ( SELECT TIPUS_CHAR ,C_TIPUS ,C_IGAZOLT ,C_TANULOID ,SUM(KESESPERC) AS KESESPERC ,SUM(KESESPERC)/@kesespercHianyzashoz AS KESESORA ,SUM(ISNULL(MULASZTASOK_SZAMA,0)) AS MULASZTASOK_SZAMA ,SUM(HOZOTTIGAZOLTMULTASZTASOK_SZAMA) AS HOZOTTIGAZOLTMULTASZTASOK_SZAMA ,SUM(HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA) AS HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA ,SUM(FELDOLGOZATLANOK_SZAMA) AS FELDOLGOZATLANOK_SZAMA FROM #szurtMulasztas GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID ) SELECT szm.TIPUS_CHAR ,szm.C_TIPUS ,szm.C_IGAZOLT ,szm.C_TANULOID ,szm.KESESPERC ,szm.KESESORA ,ISNULL(szm.MULASZTASOK_SZAMA,0) + ISNULL((SELECT KESESORA FROM cte WHERE cte.C_TANULOID = szm.C_TANULOID AND cte.C_TIPUS = 1499 AND szm.C_TIPUS = 1500 AND cte.C_IGAZOLT = szm.C_IGAZOLT), 0) + IIF(szm.TIPUS_CHAR = 'K',0,IIF(szm.C_IGAZOLT = 'T',szm.HOZOTTIGAZOLTMULTASZTASOK_SZAMA,szm.HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA)) AS OSSZES_MULASZTASOK_SZAMA ,ISNULL(szm.MULASZTASOK_SZAMA, 0) AS MULASZTASOK_SZAMA ,IIF(szm.TIPUS_CHAR = 'K',0,IIF(szm.C_IGAZOLT = 'T',szm.HOZOTTIGAZOLTMULTASZTASOK_SZAMA,szm.HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA)) AS HOZOTTMULASZTASOK_SZAMA ,szm.FELDOLGOZATLANOK_SZAMA FROM cte AS szm ORDER BY szm.C_TANULOID, szm.C_TIPUS, szm.C_IGAZOLT DESC SELECT C_IGAZOLT ,C_TANULOID ,SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA FROM ( SELECT TIPUS_CHAR ,C_TIPUS ,C_IGAZOLT ,C_TANULOID ,SUM(KESESPERC)/@kesespercHianyzashoz AS MULASZTASOK_SZAMA FROM #szurtMulasztas WHERE TIPUS_CHAR = 'K' GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID UNION ALL SELECT TIPUS_CHAR ,C_TIPUS ,C_IGAZOLT ,C_TANULOID ,SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA FROM #szurtMulasztas WHERE TIPUS_CHAR = 'H' GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID ) AS KM GROUP BY C_IGAZOLT, C_TANULOID ORDER BY C_TANULOID, C_IGAZOLT DESC END ELSE BEGIN WITH cte AS ( SELECT szm.TIPUS_CHAR ,szm.C_TIPUS ,szm.C_IGAZOLT ,szm.C_TANULOID ,SUM(szm.KESESPERC) AS KESESPERC ,SUM(szm.KESESORA) AS KESESORA ,SUM(ISNULL(szm.MULASZTASOK_SZAMA,0)) AS MULASZTASOK_SZAMA ,SUM(IIF(szm.TIPUS_CHAR = 'K' ,0 ,IIF(szm.C_IGAZOLT = 'T' ,szm.HOZOTTIGAZOLTMULTASZTASOK_SZAMA ,szm.HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA ) )) AS HOZOTTMULASZTASOK_SZAMA ,szm.C_GYAKORLATI ,SUM(szm.FELDOLGOZATLANOK_SZAMA) AS FELDOLGOZATLANOK_SZAMA FROM ( SELECT TIPUS_CHAR ,C_TIPUS ,C_IGAZOLT ,C_TANULOID ,KESESPERC ,KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN @kesespercGyakHianyzashoz ELSE @kesespercHianyzashoz END) AS KESESORA ,MULASZTASOK_SZAMA ,HOZOTTIGAZOLTMULTASZTASOK_SZAMA ,HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA ,C_GYAKORLATI ,FELDOLGOZATLANOK_SZAMA FROM #szurtMulasztas ) AS szm GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_GYAKORLATI, C_TANULOID ) SELECT szm.TIPUS_CHAR ,szm.C_TIPUS ,szm.C_IGAZOLT ,szm.C_TANULOID ,szm.KESESPERC ,szm.KESESORA ,MULASZTASOK_SZAMA + ISNULL((SELECT KESESORA FROM cte WHERE cte.C_TANULOID = szm.C_TANULOID AND cte.C_TIPUS = 1499 AND szm.C_TIPUS = 1500 AND cte.C_IGAZOLT = szm.C_IGAZOLT AND cte.C_GYAKORLATI = szm.C_GYAKORLATI), 0) + IIF(szm.TIPUS_CHAR = 'K' OR szm.C_GYAKORLATI = 'T' ,0 ,szm.HOZOTTMULASZTASOK_SZAMA ) AS OSSZES_MULASZTASOK_SZAMA ,MULASZTASOK_SZAMA ,HOZOTTMULASZTASOK_SZAMA ,C_GYAKORLATI ,FELDOLGOZATLANOK_SZAMA FROM cte AS szm ORDER BY szm.C_TANULOID, szm.C_TIPUS DESC, szm.C_IGAZOLT DESC SELECT C_IGAZOLT, C_TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, C_GYAKORLATI FROM ( SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN @kesespercGyakHianyzashoz ELSE @kesespercHianyzashoz END) AS MULASZTASOK_SZAMA, C_GYAKORLATI FROM #szurtMulasztas WHERE TIPUS_CHAR = 'K' UNION ALL SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, MULASZTASOK_SZAMA, C_GYAKORLATI FROM #szurtMulasztas WHERE TIPUS_CHAR = 'H' ) AS KM GROUP BY C_IGAZOLT, C_TANULOID, C_GYAKORLATI ORDER BY C_TANULOID, C_IGAZOLT DESC END --TANÓRAI FELJEGYZÉSEK SELECT C_TANULOID ,SUM(IIF(C_TIPUS = @pTanoraiDicseretTipusId, 1, 0)) AS TanoraiDicseret ,SUM(IIF(C_TIPUS = @pFelszereleshianyTipusId, 1, 0)) AS FelszerelesHiany ,SUM(IIF(C_TIPUS = @pHaziFeladatHianyTipusId, 1, 0)) AS HaziFeladatHiany ,'F' AS TOROLT FROM T_TANULOESEMENY_OSSZES AS TANULOESEMENY INNER JOIN T_TANITASIORA_OSSZES AS TANITASIORA ON TANITASIORA.ID = TANULOESEMENY.C_TANITASIORAID INNER JOIN T_TANULO_TANULOESEMENY AS TANULO_TANULOE ON TANULO_TANULOE.C_TANULOESEMENYID = TANULOESEMENY.ID INNER JOIN T_DICTIONARYITEMBASE_OSSZES AS TIPUS ON TIPUS.ID = TANULOESEMENY.C_TIPUS AND TIPUS.C_TANEVID = TANULOESEMENY.C_TANEVID AND TIPUS.TOROLT = 'F' INNER JOIN #Tanulok AS OSZTALYTANULOK ON OSZTALYTANULOK.TANULOID = TANULO_TANULOE.C_TANULOID INNER JOIN #aktualisOsztalyCsoportok AS OSZTALYCSOPORT ON OSZTALYCSOPORT.OSZTALYCSOPORTID = TANITASIORA.C_OSZTALYCSOPORTID LEFT JOIN T_CSOPORT_OSSZES AS CSOPORT ON CSOPORT.ID = OSZTALYCSOPORT.OSZTALYCSOPORTID AND CSOPORT.TOROLT = 'F' LEFT JOIN T_OSZTALY_OSSZES AS OSZTALY ON OSZTALY.ID = OSZTALYCSOPORT.OSZTALYCSOPORTID AND OSZTALY.TOROLT = 'F' WHERE TANULOESEMENY.TOROLT = 'F' AND TANITASIORA.TOROLT = 'F' AND TANULOESEMENY.C_TANEVID = @pTanevId AND C_TANITASIORAID IS NOT NULL AND TANITASIORA.C_DATUM BETWEEN @idoszakEleje AND @idoszakVege AND TANITASIORA.C_OSZTALYCSOPORTID IN (SELECT OSZTALYCSOPORTID FROM #aktualisOsztalyCsoportok) GROUP BY C_TANULOID -- Osztály adatok az iktatáshoz SELECT f.C_NYOMTATASINEV Osztalyfonok ,f.ID OsztalyfonokId ,ocs.C_NEV Osztalynev ,@pOsztalyId OsztalyId ,ocs.C_EVFOLYAMTIPUSA EvfolyamTipusa ,ocs.C_FELADATELLATASIHELYID FeladatEllatasiHelyId ,o.C_TANTERVID TantervId ,ocs.C_KEPZESIFORMA KepzesiForma ,o.C_AGAZAT Agazat ,o.C_SZAKMACSOPORT SzakmaCsoport ,o.C_SZAKKEPESITES Szakkepesites ,o.C_RESZSZAKKEPESITES Reszszakkepesites ,o.C_AGAZATUJSZKTTIPUSID AS UjSzktAgazat ,o.C_SZAKMATIPUSID AS UjSzktSzakma ,o.C_SZAKMAIRANYTIPUSID AS UjSzktSzakmairany ,o.C_TANULMANYITERULETNKTTIPUSID AS NktTanulmanyiTerulet ,o.C_SZAKKEPESITESNKTTIPUSID AS NktSzakkepesites ,o.C_SZAKIRANYNKTTIPUSID AS NktSzakirany ,ocs.C_KERESZTFELEVES OJCSJKeresztfeleves ,ocs.C_VEGZOSEVFOLYAM CSJVegzosEvfolyamu ,ocs.C_ISTECHNIKAI OJTechnikaiOsztaly ,o.C_NEMZETISEGI OJNemzetisegi ,o.C_KETTANNYELVU OJKettannyelvu ,o.C_NYELVIELOKESZITO OJNyelviElokeszito ,ocs.C_ISGYOGYPEDAGOGIAILOGOPEDIAI OJIsGyogypedagogiaiLogopediai ,o.C_SPORT OJSportOsztaly ,o.C_AJPROGRAM OJAranyJanosProgram FROM T_OSZTALYCSOPORT_OSSZES ocs INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.id LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = o.C_OSZTALYFONOKID WHERE ocs.ID = @pOsztalyId AND ocs.C_TANEVID = @pTanevId AND ocs.TOROLT = 'F'; SELECT C_TANULOID ,[D] AS Dicseret ,[K] AS Kituno FROM ( SELECT C_TANULOID ,T_TANULOERTEKELES_ID ,LEFT(ERTEKELES_SZOVEG_MEGJEGYZES, 1) AS Szoveg FROM #szurtErtekeles WHERE ERTEKELES = '5' AND REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(ERTEKELES_SZOVEG_MEGJEGYZES,CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) IN ( 'Dicséret', 'Kitűnő' ) ) AS s PIVOT(COUNT(T_TANULOERTEKELES_ID) FOR Szoveg IN ([D], [K])) piv ORDER BY C_TANULOID END GO