SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF OBJECT_ID('sp_GetOsztalyNaplo') IS NOT NULL BEGIN DROP PROCEDURE sp_GetOsztalyNaplo END GO CREATE PROCEDURE sp_GetOsztalyNaplo @intezmenyId INT, @tanevId INT, @osztalyId INT, @isSzövegesNaplo BIT = 0, @iskolaErdekuSzamit BIT, @fuggolegesTantargyak BIT AS BEGIN SET NOCOUNT ON; DECLARE @TanitasiNapTipusok TABLE (Id INT) INSERT INTO @TanitasiNapTipusok SELECT DISTINCT ID FROM T_DICTIONARYITEMBASE_OSSZES WHERE ID IN (1385, 1393, 1394, 1395, 1400, 1402, 1403, 1404) DECLARE @ElsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1394 AND C_TANEVID = @tanevId AND TOROLT = 'F') DECLARE @UtolsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1395 AND C_TANEVID = @tanevId AND TOROLT = 'F') DECLARE @NapSorszam TABLE (Datum DATE, Sorszam NVARCHAR(4)) INSERT INTO @NapSorszam SELECT C_NAPDATUMA ,CAST(DENSE_RANK() OVER(ORDER BY C_NAPDATUMA) AS NVARCHAR(4)) FROM T_NAPTARINAP_OSSZES WHERE C_TANEVID = @tanevId AND TOROLT = 'F' AND C_NAPTIPUSA IN (SELECT Id FROM @TanitasiNapTipusok) AND C_NAPDATUMA <= @UtolsoNap CREATE TABLE #students (ID INT PRIMARY KEY, BelepesDatum DATE, KilepesDatum DATE) INSERT INTO #students SELECT TanuloId ,BelepesDatum ,ISNULL(KilepesDatum, GETDATE()) FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') -- Naplo fooldal CREATE TABLE #osztalycsoportok (OsztalyCsoportId INT PRIMARY KEY) INSERT INTO #osztalycsoportok (OsztalyCsoportId) SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId) CREATE TABLE #OsztalyVagyTanoraiCsoport (Id INT) INSERT INTO #OsztalyVagyTanoraiCsoport SELECT ID FROM fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId) SELECT DISTINCT ocs.C_NEV OsztalyNev ,o.C_OSZTALYNAPLOLEIRASA OsztalyMegjegyzes ,o.C_OSZTALYFONOKID PartnerID ,ofo.C_NYOMTATASINEV Osztalyfonok ,i.C_IGAZGATONEVE IntezmenyVezeto ,i.C_NEV IntezmenyNeve ,i.C_IRANYITOSZAM IntezmenyIranyitoszam ,i.C_VAROS IntezmenyVaros ,i.C_CIME IntezmenyCime ,i.C_OMKOD IntezmenyOMKod ,FORMAT(o.c_osztalynaplomegnyitasa, 'yyyy. MMMM dd.', 'hu-hu') NaploMegnyitasanakDatuma ,FORMAT(o.c_osztalynaplozarasa, 'yyyy. MMMM dd.', 'hu-hu') NaploZarasanakDatuma ,(SELECT COUNT(Id) FROM #students) TanulokSzama ,(SELECT MAX(CAST(Sorszam AS INT)) FROM @NapSorszam) TanitasiNapokSzama FROM T_OSZTALYCSOPORT_OSSZES ocs INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID and o.torolt='F' LEFT JOIN T_FELHASZNALO_OSSZES ofo ON ofo.ID = o.C_OSZTALYFONOKID INNER JOIN T_INTEZMENYADATOK_OSSZES i on i.C_INTEZMENYID=ocs.C_INTEZMENYID WHERE ocs.ID = @osztalyId -- Tanarok SELECT targy.C_NEV TargyNev, tanar.C_NYOMTATASINEV TanarNev FROM T_FELHASZNALO_OSSZES tanar INNER JOIN T_FOGLALKOZASOK_TANAROK ft ON tanar.ID = ft.C_TANAROKID INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.ID = ft.C_FOGLALKOZASOKID and f.torolt='F' INNER JOIN T_TANTARGY_OSSZES targy ON targy.ID = f.C_TANTARGYID and targy.torolt='F' WHERE tanar.TOROLT = 'F' AND f.TOROLT = 'F' AND f.C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #osztalycsoportok) GROUP BY targy.C_NEV, tanar.C_NYOMTATASINEV ORDER BY targy.C_NEV, tanar.C_NYOMTATASINEV -- Orarend EXEC sp_GetOrarendOsztalyonkent @intezmenyId, @tanevID, @osztalyid -- Oralatogatasok SELECT FORMAT(T_ORALATOGATAS_OSSZES.C_DATUM, 'yyyy.MM.dd.') DATUM ,TANITASIORA.C_ORASZAM ORASZAM ,TARGY.C_NEV TARGYNEV ,T_FELHASZNALO_OSSZES.C_NYOMTATASINEV LATOGATO ,T_ORALATOGATAS_OSSZES.C_ORALATOGATOBEOSZTASA LATOGATOBEOSZTAS ,T_ORALATOGATAS_OSSZES.C_MEGJEGYZES ESZREVETEL FROM T_ORALATOGATAS_OSSZES INNER JOIN T_FELHASZNALO_OSSZES ON T_FELHASZNALO_OSSZES.ID = T_ORALATOGATAS_OSSZES.C_ERTEKELOID INNER JOIN (SELECT ID, C_TANTARGYID, C_ORASZAM, C_OSZTALYCSOPORTID FROM T_TANITASIORA_OSSZES ) TANITASIORA ON TANITASIORA.ID = T_ORALATOGATAS_OSSZES.C_MEGTARTOTTORAID INNER JOIN T_TANTARGY_OSSZES TARGY ON TARGY.ID = TANITASIORA.C_TANTARGYID WHERE T_ORALATOGATAS_OSSZES.TOROLT='F' AND T_ORALATOGATAS_OSSZES.c_tanevId=@tanevId AND C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId)) ORDER BY T_ORALATOGATAS_OSSZES.C_DATUM, TANITASIORA.C_ORASZAM -- Naploellenorzesek SELECT FORMAT(C_ELLENORZESDATUMA, 'yyyy.MM.dd.') ELLENORZESDATUMA ,ELLENORZO.C_NYOMTATASINEV ELLENORZOSZEMELY ,T_NAPLOELLENORZES_OSSZES.C_ESZREVETEL ESZREVETEL FROM T_NAPLOELLENORZES_OSSZES INNER JOIN T_FELHASZNALO_OSSZES ELLENORZO ON ELLENORZO.ID = T_NAPLOELLENORZES_OSSZES.C_ELLENORZOSZEMELYID WHERE C_OSZTALYID = @osztalyId AND T_NAPLOELLENORZES_OSSZES.TOROLT = 'F' AND T_NAPLOELLENORZES_OSSZES.c_tanevId=@tanevId /* Napló */ DECLARE @datum DATE=GETDATE() CREATE TABLE #OraSorszam (TanitasioraId int, OraSorszam int) INSERT INTO #OraSorszam EXEC sp_GetOraSorszamByOsztaly @osztalyCsoportId = @osztalyId, @datum = @datum, @intezmenyId = @intezmenyId, @tanevId = @tanevId SELECT tao.Id TanitasioraId ,tao.C_DATUM Datum ,C_ORASZAM Oraszam ,C_ORATULAJDONOSID PedagogusId ,C_NYOMTATASINEV PedagogusNev ,IIF(C_MEGTARTOTT = 'T', ISNULL(CONVERT(NVARCHAR(MAX), OraSorszam),'-'), '-') OraSorszam ,IIF(C_MEGTARTOTT = 'T', C_TEMA, 'Elmaradt') Tema ,IIF(C_MEGTARTOTT = 'T', ISNULL(CONVERT(NVARCHAR(MAX), OraSorszam),'-') +'.: ' + C_TEMA, 'Elmaradt') TemaOraSzammal ,tao.C_HETNAPJA HetNapja ,C_HETSORSZAMA HetSorszama ,C_MEGTARTOTT Megtartott ,C_TANTARGYID TantargyId ,IIF(tantargy.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + tantargy.C_NEV + ')', tantargy.C_NEV) Tantargynev ,C_OSZTALYCSOPORTID OsztalyCsoportId ,C_NAPSORSZAMA NapSorszama INTO #megtartottOrak FROM T_TANITASIORA_OSSZES tao INNER JOIN T_FELHASZNALO_OSSZES pedagogus ON pedagogus.Id = tao.C_ORATULAJDONOSID INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = tao.C_TANTARGYID LEFT JOIN #OraSorszam oraSorszam ON oraSorszam.TanitasioraId = tao.Id WHERE C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #osztalycsoportok) AND tao.TOROLT = 'F' SELECT nn.C_HETSORSZAMA ,MIN(nn.C_NAPDATUMA) ,MAX(nn.C_NAPDATUMA) FROM T_NAPTARINAP_OSSZES nn WHERE nn.C_NAPDATUMA BETWEEN @ElsoNap AND @UtolsoNap AND nn.C_HETNAPJA BETWEEN 1407 AND 1413 AND nn.TOROLT='F' AND nn.c_tanevId = @tanevId GROUP BY nn.C_HETSORSZAMA ORDER BY MIN(nn.C_NAPDATUMA) SELECT C_NAPDATUMA Datum ,oraszam Oraszam ,C_HETSORSZAMA HetSorszama ,nn.C_HETNAPJA HetNapja ,C_MEGJEGYZES Megjegyzes ,ISNULL(Sorszam,'-') Sorszam INTO #OsszesOra FROM T_NAPTARINAP_OSSZES nn LEFT JOIN @NapSorszam sorszam ON sorszam.Datum = nn.C_NAPDATUMA LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND tr.C_TANEVID = nn.C_TANEVID AND tr.TOROLT = 'F' CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) oraszam(oraszam) WHERE nn.C_TANEVID = @tanevId AND nn.C_NAPTIPUSA <> 1386 AND nn.TOROLT = 'F' AND nn.C_NAPDATUMA <= @UtolsoNap IF @isSzövegesNaplo = 0 BEGIN /* NORMÁL OSZTÁLYNAPLÓ */ DECLARE @selectList nvarchar(MAX), @pivotList nvarchar(MAX) SELECT DISTINCT tao.C_DATUM Datum ,t.C_NYOMTATASINEV + ' [' + STUFF(( SELECT ', ' + CAST(btao.C_ORASZAM AS VARCHAR(3)) + IIF(tm.C_TIPUS = 1500, '', '(k)') FROM T_TANULOMULASZTAS_OSSZES tm INNER JOIN T_TANITASIORA_OSSZES btao ON btao.ID = tm.C_TANITASIORAKID INNER JOIN #students s ON s.ID = tm.C_ORATANULOIID AND btao.C_DATUM BETWEEN BelepesDatum AND KilepesDatum WHERE tao.C_DATUM = btao.C_DATUM AND m.C_ORATANULOIID = tm.C_ORATANULOIID AND tm.TOROLT = 'F' AND tm.c_tanevId = @tanevId ORDER BY btao.C_NAPTARINAPID, btao.C_ORASZAM FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,2,'') + '] ' + CAST(SUM(IIF(m.C_IGAZOLT = 'T', 1, 0)) AS varchar(2)) + '/' + CAST(SUM(IIF(m.C_IGAZOLT = 'T' OR m.C_TIPUS = 1499, 0, 1)) AS varchar(2)) AS Hianyzas INTO #hianyzasokTMP FROM T_TANITASIORA_OSSZES tao INNER JOIN T_TANULOMULASZTAS_OSSZES m ON m.C_TANITASIORAKID = tao.ID INNER JOIN #osztalycsoportok cs ON cs.OsztalyCsoportId = tao.C_OSZTALYCSOPORTID INNER JOIN T_FELHASZNALO_OSSZES t ON t.ID = m.C_ORATANULOIID WHERE m.TOROLT = 'F' AND m.c_tanevId = @tanevId AND tao.C_OSZTALYCSOPORTID IN (SELECT ID FROM #OsztalyVagyTanoraiCsoport) AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533) GROUP BY tao.C_DATUM, C_ORATANULOIID, C_NYOMTATASINEV SELECT Datum ,STUFF(( SELECT char(13) + char(10) + Hianyzas FROM #hianyzasokTMP bHianyzasok WHERE Hianyzasok.Datum = bHianyzasok.Datum FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,2,'') AS Hianyzas INTO #hianyzasok FROM #hianyzasokTMP Hianyzasok SELECT DISTINCT NapSorszama ,Datum ,HetSorszama ,HetNapja ,Oraszam ,STUFF((SELECT DISTINCT ' | ' + CAST(bmto.TantargyNev AS VARCHAR(max)) FROM #megtartottOrak bmto WHERE bmto.Datum = mto.Datum AND bmto.Oraszam = mto.Oraszam FOR XML PATH(''), TYPE) .value('.','NVARCHAR(MAX)'),1,3,'') Tantargy INTO #Orarend FROM #megtartottOrak mto SELECT DISTINCT Datum ,1 Oraszam ,TantargyId ,STUFF((SELECT DISTINCT ' | ' + CAST(bmto.TemaOraSzammal AS VARCHAR(max)) FROM #megtartottOrak bmto WHERE bmto.Datum = mto.Datum AND bmto.TantargyId = mto.TantargyId FOR XML PATH(''), TYPE) .value('.','NVARCHAR(MAX)'),1,3,'') Tema INTO #1nap1TantargyTobbOra FROM #megtartottOrak mto DECLARE @tantargyak NVARCHAR(MAX) DECLARE @tantargyakNevvel NVARCHAR(MAX) SELECT @tantargyakNevvel = ISNULL(@tantargyakNevvel + ', ', '') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + '] AS [' + t.TantargyNev + ']', @tantargyak = ISNULL(@tantargyak + ', ', '') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + ']' FROM (SELECT DISTINCT TantargyId, TantargyNev FROM #megtartottOrak) t DECLARE @sql NVARCHAR(MAX) SET @sql = ' SELECT Datum ,Oraszam , ' + @tantargyak +' INTO #naplo FROM #1nap1TantargyTobbOra PIVOT (MAX(Tema) FOR TantargyId IN (' + @tantargyak + ')) piv SELECT DISTINCT OsszesOra.Datum C_NAPDATUMA ,Hianyzas Mulasztas ,OsszesOra.Megjegyzes Megjegyzés ,OsszesOra.Oraszam ORASZAM ,Orarend.NapsorSzama T1ID ,Orarend.NapsorSzama T2ID ,Orarend.NapsorSzama T3ID ,Orarend.Tantargy TANTARGY ,OsszesOra.HetSorszama C_HETSORSZAMA ,OsszesOra.HetNapja C_HETNAPJA ,OsszesOra.Sorszam NapSorszama ,' + @tantargyakNevvel + ' FROM #OsszesOra OsszesOra LEFT JOIN #Orarend Orarend ON Orarend.Datum = OsszesOra.Datum AND Orarend.Oraszam = OsszesOra.Oraszam LEFT JOIN #naplo Naplo ON Naplo.Datum = OsszesOra.Datum AND Naplo.Oraszam = OsszesOra.Oraszam LEFT JOIN #hianyzasok Hianyzasok ON Hianyzasok.Datum = OsszesOra.Datum WHERE OsszesOra.ORASZAM <=10 ' EXEC sp_executesql @sql DROP TABLE #1nap1TantargyTobbOra DROP TABLE #OsszesOra DROP TABLE #hianyzasokTMP DROP TABLE #hianyzasok DROP TABLE #Orarend END -- NORMÁL OSZTÁLYNAPLÓ ELSE BEGIN -- SZÖVEGES OSZTÁLYNAPLÓ SELECT OsszesOra.Datum C_NAPDATUMA ,FORMAT(OsszesOra.Datum, 'dddd', 'hu-hu') Napneve ,'' C_MEGJEGYZES ,nh.C_HETKEZDONAPJA C_HETKEZDONAPJA ,nh.C_HETUTOLSONAPJA C_HETUTOLSONAPJA ,OsszesOra.HetSorszama C_HETSORSZAMA ,OsszesOra.Oraszam OraSorszam ,OsszesOra.Sorszam Napszam ,Tantargynev Tantargy ,PedagogusNev Tanar ,Tema Oraanyaga ,OraSorszam C_ORAEVESSORSZAM INTO #szoveges FROM #OsszesOra OsszesOra LEFT JOIN #megtartottOrak mto ON mto.Datum = OsszesOra.Datum AND OsszesOra.Oraszam = mto.Oraszam INNER JOIN T_NAPTARIHET_OSSZES nh ON OsszesOra.Datum BETWEEN nh.C_HETKEZDONAPJA AND nh.C_HETUTOLSONAPJA AND nh.C_TANEVID = @tanevId and nh.torolt='F' SELECT DISTINCT c_napdatuma , napneve , c_megjegyzes , c_hetkezdonapja , c_hetutolsonapja , c_hetsorszama , orasorszam , napszam , STUFF((SELECT DISTINCT ' | ' + CAST(bszov.TANTARGY AS VARCHAR(max)) FROM #szoveges bszov WHERE bszov.C_NAPDATUMA=szov.C_NAPDATUMA and bszov.ORASORSZAM=szov.ORASORSZAM and bszov.napszam=szov.napszam FOR XML PATH(''), TYPE) .value('.','NVARCHAR(MAX)'),1,3,'') TANTARGY , STUFF((SELECT DISTINCT ' | ' + CAST(bszov.TANAR AS VARCHAR(max)) FROM #szoveges bszov WHERE bszov.C_NAPDATUMA=szov.C_NAPDATUMA and bszov.ORASORSZAM=szov.ORASORSZAM and bszov.napszam=szov.napszam FOR XML PATH(''), TYPE) .value('.','NVARCHAR(MAX)'),1,3,'') TANAR , STUFF((SELECT DISTINCT ' | ' + CAST(bszov.ORAANYAGA AS VARCHAR(max)) FROM #szoveges bszov WHERE bszov.C_NAPDATUMA=szov.C_NAPDATUMA and bszov.ORASORSZAM=szov.ORASORSZAM and bszov.napszam=szov.napszam FOR XML PATH(''), TYPE) .value('.','NVARCHAR(MAX)'),1,3,'') ORAANYAGA , STUFF((SELECT DISTINCT ' | ' + CAST(bszov.C_ORAEVESSORSZAM AS VARCHAR(max)) FROM #szoveges bszov WHERE bszov.C_NAPDATUMA=szov.C_NAPDATUMA and bszov.ORASORSZAM=szov.ORASORSZAM and bszov.napszam=szov.napszam FOR XML PATH(''), TYPE) .value('.','NVARCHAR(MAX)'),1,3,'') OraEvesSorszama FROM #szoveges szov ORDER BY C_NAPDATUMA, orasorszam /*Hiányzások*/ SELECT C_HETSORSZAMA, C_NYOMTATASINEV, MAX([1]) AS [Hetfo], MAX([2]) AS [Kedd], MAX([3]) AS [Szerda], MAX([4]) AS [Csutortok], MAX([5]) AS [Pentek], MAX([6]) AS [Szombat] FROM ( SELECT C_HETSORSZAMA, C_NYOMTATASINEV, [0], [1], [2], [3], [4], [5], [6] FROM ( SELECT DISTINCT n.C_NAPTARINAPID, DATEPART(dw,n.C_DATUM) AS NAP, t.C_NYOMTATASINEV, n.C_HETSORSZAMA, '[' + STUFF(( SELECT ', ' + CAST(o.C_ORASZAM AS VARCHAR(3)) + IIF(tm.C_TIPUS = 1500, '', '(k)') FROM T_TANULOMULASZTAS_OSSZES tm INNER JOIN T_TANITASIORA_OSSZES o ON o.ID = tm.C_TANITASIORAKID INNER JOIN #osztalycsoportok cs ON cs.OsztalyCsoportId = o.C_OSZTALYCSOPORTID INNER JOIN #students s ON s.ID = tm.C_ORATANULOIID AND o.C_DATUM BETWEEN BelepesDatum AND KilepesDatum WHERE n.C_NAPTARINAPID = o.C_NAPTARINAPID AND m.C_ORATANULOIID = tm.C_ORATANULOIID AND tm.C_TANEVID = @tanevId and tm.torolt='F' and tm.c_intezmenyId=@intezmenyId and o.c_tanevId=@tanevId ORDER BY o.C_NAPTARINAPID, o.C_ORASZAM FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,2,'') + '] ' + CAST(SUM(IIF(m.C_IGAZOLT = 'T', 1, 0)) AS varchar(2)) + '/' + CAST(SUM(IIF(m.C_IGAZOLT = 'T' OR m.C_TIPUS = 1499, 0, 1)) AS varchar(2)) AS hianyzas FROM T_TANITASIORA_OSSZES n INNER JOIN T_TANULOMULASZTAS_OSSZES m ON m.C_TANITASIORAKID = n.ID and m.torolt='F' INNER JOIN #students s ON s.ID = m.C_ORATANULOIID AND n.C_DATUM BETWEEN BelepesDatum AND KilepesDatum INNER JOIN #OsztalyVagyTanoraiCsoport cs ON cs.Id = n.C_OSZTALYCSOPORTID INNER JOIN T_FELHASZNALO t ON t.ID = m.C_ORATANULOIID WHERE n.C_TANEVID = @tanevId AND m.C_TANEVID = @tanevId AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533) GROUP BY n.C_NAPTARINAPID, C_ORATANULOIID, C_NYOMTATASINEV, n.C_HETSORSZAMA, n.C_DATUM) AS SUB PIVOT ( MAX(HIANYZAS) FOR NAP IN ([0], [1], [2], [3], [4], [5], [6]) ) AS PivotTable ) AS ASD GROUP BY C_HETSORSZAMA, C_NYOMTATASINEV ORDER BY C_HETSORSZAMA END --SZÖVEGES OSZTÁLYNAPLÓ /*TANULÓ adatai*/ DECLARE @NaploSorszam TABLE ( TanuloId INT ,Sorszam INT ) INSERT INTO @NaploSorszam EXEC [sp_GetDokumentumTanuloNaploSorszam] @osztalyId = @osztalyId SELECT DISTINCT tanuloID , sorszam , torzslapSzam , oktAzon , tajSzam , anyjaNeve , szulHely , CONVERT(NVARCHAR(100),DATEPART(YEAR,szulIdo))+'. '+CONVERT(NVARCHAR(100) , datepart(month,szulIdo))+'. '+convert(nvarchar(100) , datepart(day,szulIdo))+'.' SzulIdo , gondviselok , IIF(socAdat = '', '', LEFT(socAdat, len(socAdat)- 1)) socAdat , kepzes , tanuloNeve , allampolgarsaga , diakIgazolvanySzam , kilepesDatum , beirasiNaploSorszam FROM ( SELECT t.ID AS tanuloID , naploSorszam.Sorszam as sorszam , f.C_NYILVANTARTASISZAM as torzslapSzam ,f.C_OKTATASIAZONOSITO as oktAzon , f.C_TAJSZAM as tajSzam , f.C_ANYJANEVE as anyjaNeve, f.C_SZULETESIHELY AS szulHely ,f.C_SZULETESIDATUM as szulIdo ,IIF(t.C_MAGANTANULO = 'T', 'Magántanuló (eü. ok), ', '') + IIF(t.C_JOGVISZONYATSZUNETELTETO = 'T', 'Jogviszony szüneteltetve, ', '') + IIF(t.C_SZAKMAIGYAKORLATON = 'T', 'Szakmai gyakorlat, ', '') + IIF(t.C_SZOCIALISTAMOGATAS = 'T', 'Szociális támogatás, ', '') AS socAdat, tt.C_NEV as kepzes, STUFF(( SELECT char(13) + char(10) + gv.C_NEV FROM T_GONDVISELO_OSSZES gv WHERE gv.C_TANULOID = s.ID AND gv.TOROLT = 'F' FOR XML PATH(''), TYPE).value('.', 'nvarchar(4000)'),1,2,'') AS gondviselok, f.C_NYOMTATASINEV as tanuloNeve, d.C_NAME allampolgarsaga, t.C_DIAKIGAZOLVANYSZAM diakIgazolvanySzam, MAX(cs.C_KILEPESDATUM) kilepesDatum, t.C_BEIRASINAPLOSORSZAM beirasiNaploSorszam FROM T_TANULO_OSSZES t INNER JOIN #students s ON s.ID = t.ID INNER JOIN @NaploSorszam naploSorszam on naploSorszam.TanuloId=s.ID INNER JOIN T_TANTERV_OSSZES tt ON tt.ID = t.C_TANTERVID INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = t.ID INNER JOIN T_TANULOCSOPORT_OSSZES cs ON s.ID = cs.C_TANULOID AND cs.C_OSZTALYCSOPORTID = @osztalyId INNER JOIN T_DICTIONARYITEMBASE_OSSZES d on d.id=f.C_ALLAMPOLGARSAGA AND d.C_TANEVID = f.C_TANEVID AND d.C_INTEZMENYID = f.C_INTEZMENYID WHERE t.TOROLT='F' GROUP BY s.ID, t.ID, naploSorszam.Sorszam, f.C_NYILVANTARTASISZAM, f.C_OKTATASIAZONOSITO, f.C_TAJSZAM, f.C_ANYJANEVE, f.C_SZULETESIHELY, f.C_SZULETESIDATUM, t.C_MAGANTANULO, t.C_JOGVISZONYATSZUNETELTETO, t.C_SZAKMAIGYAKORLATON, t.C_SZOCIALISTAMOGATAS, tt.C_NEV, f.C_NYOMTATASINEV, d.C_NAME, t.C_DIAKIGAZOLVANYSZAM, t.C_BEIRASINAPLOSORSZAM ) tbl ORDER BY tanuloNeve /*TANULÓ elérhetőségei */ SELECT DISTINCT tanulo.Id tanuloID , cimTipus , cim.OsszetettCim cim , telefon.Telefonszam , email.Email , cim.ct FROM #students Tanulo LEFT JOIN (SELECT c.C_FELHASZNALOID Tanulo , c.C_IRANYITOSZAM+', '+c.C_VAROS+', '+C_KOZTERULET+' '+kozteruletJellege.C_NAME+' '+C_HAZSZAM OsszetettCim , cimTipus.C_NAME cimTipus , cimTipus.Id ct FROM T_CIM_OSSZES c INNER JOIN (SELECT DISTINCT ID, C_NAME FROM T_DICTIONARYITEMBASE_OSSZES d) kozteruletJellege ON kozteruletJellege.Id=c.c_kozteruletjellege INNER JOIN (SELECT DISTINCT ID, C_NAME FROM T_DICTIONARYITEMBASE_OSSZES d) cimTipus ON cimTipus.Id=c.C_CIMTIPUSA WHERE c.TOROLT='F' AND c.C_GONDVISELOID IS NULL) cim ON cim.Tanulo=Tanulo.Id LEFT JOIN (SELECT C_FELHASZNALOID Tanulo , C_TELEFONSZAM Telefonszam FROM T_TELEFON_OSSZES WHERE TOROLT='F' AND C_ALAPERTELMEZETT='T') telefon on telefon.Tanulo=Tanulo.Id LEFT JOIN (SELECT C_FELHASZNALOID Tanulo , C_EMAILCIM Email FROM T_EMAIL_OSSZES WHERE Torolt='F' AND C_ALAPERTELMEZETT='T') email ON email.Tanulo=Tanulo.Id /* TANULÓ mentesség */ SELECT s.ID tanuloId ,ROW_NUMBER() OVER(PARTITION BY s.ID ORDER BY s.ID) sorszam , mentesseg.tantargyNev , mentesseg.mentessegOka , ISNULL(IIF(mentesseg = '', '' , LEFT(mentesseg, LEN(mentesseg)- 1)),' ') mentesseg FROM #students s LEFT JOIN (SELECT DISTINCT mentesseg.C_TANULOID tanuloId , IIF(t.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + t.C_NEV + ')', t.C_NEV) tantargyNev , mentesseg.C_MENTESSEGOKA mentessegOka , IIF(mentesseg.C_ERTEKELESMENTESITES = 'T', 'Értékelésmentesség, ', '') + IIF(mentesseg.C_ORAMENTESITES = 'T', 'Óramentesség, ', '') as mentesseg FROM T_TANULOMENTESSEG_OSSZES mentesseg INNER JOIN T_TANTARGY_OSSZES t on t.ID=mentesseg.C_TANTARGYID INNER JOIN #students s ON s.ID = mentesseg.C_TANULOID AND mentesseg.C_KEZDETE BETWEEN BelepesDatum AND KilepesDatum WHERE mentesseg.TOROLT='F' AND mentesseg.C_TANEVID=@tanevId ) mentesseg ON s.ID=mentesseg.TANULOID /* TANULÓ határozatok */ SELECT s.ID as tanuloID , ROW_NUMBER() OVER(PARTITION BY s.ID ORDER BY s.ID) AS sorszam , FORMAT(Datum, 'd', 'hu-hu') as datum , d.C_NAME as tipus , Tartalom as tartalom , FeljegyzoNeve as tanar FROM #students s LEFT JOIN fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) feljegyzes ON feljegyzes.TanuloId = s.ID AND feljegyzes.Datum BETWEEN BelepesDatum AND KilepesDatum LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = Tipusa AND d.C_TANEVID = @tanevId WHERE Tipusa IN (1543, 1544, 1547, 1548, 1549, 1550, 1551, 1552, 1553) /* TANULÓ feljegyzései */ SELECT s.ID as tanuloID , ROW_NUMBER() OVER(PARTITION BY s.ID ORDER BY s.ID) AS sorszam , FORMAT(Datum, 'd', 'hu-hu') as datum , d.C_NAME as tipus , Tartalom as tartalom , FeljegyzoNeve as tanar FROM #students s LEFT JOIN fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) feljegyzes ON feljegyzes.TanuloId = s.ID AND feljegyzes.Datum BETWEEN BelepesDatum AND KilepesDatum LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = Tipusa AND d.C_TANEVID = @tanevId WHERE Tipusa IN ( 6315 ,5450 ,5421 ,6312 ,5460 ,6313 ,6314 ,6319 ,6316 ,6317 ,6318 ,5456 ,5467 ,5468 ,5469 ,5457 ,6323 ,6320 ,6321 ,6322 ,5473 ,5458 ,5470 ,5471 ,5472 ,5454 ,5461 ,5462 ,5463 ,5459 ,5455 ,5464 ,5465 ,5466 ,5453 ,1546 ,6326 ,6327 ,6328 ,5452 ,1537 ,1536 ,1538 ,1539 ,1535 ,1541 ,6491 ,1540 ,1542 ,1553 ,1545 ,5477 ,5478 ,5476 ,5474 ,5475 ,5479 ,5481 ,5480 ) /* TANULO mulasztása */ DECLARE @Mulasztasok TABLE ( IgazoltE nvarchar(1), Tanulo int, Tipus int) --Félév kezdete DECLARE @FelevVege DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES tr WHERE C_NAPTIPUSA = 1400 AND C_TANEVID=@tanevId AND TOROLT = 'F') SELECT DATEPART(MONTH,tao.C_DATUM) Honap ,tm.ID Id ,C_IGAZOLT IgazoltE ,tm.C_ORATANULOIID TanuloId ,C_IGAZOLASTIPUSA IgazolasTipus ,C_DATUM Datum ,C_TIPUS Tipus ,C_KESESPERCBEN KesesPercben INTO #mulasztasTmp FROM T_TANULOMULASZTAS_OSSZES tm INNER JOIN T_TANITASIORA_OSSZES tao ON tao.ID = tm.C_TANITASIORAKID INNER JOIN #students tanulok ON tanulok.ID = tm.C_ORATANULOIID AND (tao.C_DATUM BETWEEN BelepesDatum AND KilepesDatum OR KilepesDatum IS NULL) INNER JOIN #OsztalyVagyTanoraiCsoport ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = tao.C_OSZTALYCSOPORTID and tanulok.ID = tcs.C_TANULOID WHERE tm.TOROLT = 'F' AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA <> 1533 OR C_IGAZOLASTIPUSA IS NULL)) AND tcs.C_BELEPESDATUM <= tao.C_DATUM AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > tao.C_DATUM) INSERT INTO @Mulasztasok SELECT 'T', ID, Tipus FROM #students CROSS JOIN (SELECT DISTINCT Id FROM T_DICTIONARYITEMBASE_OSSZES WHERE C_TANEVID = @tanevId AND C_TYPE LIKE 'igazolastipus' AND (@iskolaErdekuSzamit = 1 OR Id <> 1533) ) Tipus (Tipus) SELECT Mulasztas.tanuloid, Mulasztas.tipus, Mulasztas.[09.], Mulasztas.[10.], Mulasztas.[11.], Mulasztas.[12.], Mulasztas.[01.], Mulasztas.[02.], Mulasztas.[03.], Mulasztas.[04.], Mulasztas.[05.], Mulasztas.[06.], mulasztas.felev felev, isnull(Mulasztas.osszesen,0) Osszesen, mulasztas.Rendez FROM ( --hiányzás --különböző típusok SELECT m.Tanulo tanuloid, '-'+d.c_name tipus, isnull(p.[9],0) '09.', isnull(p.[10],0) '10.', isnull(p.[11],0) '11.', isnull(p.[12],0) '12.', isnull(p.[1],0) '01.', isnull(p.[2],0) '02.', isnull(p.[3],0) '03.', isnull(p.[4],0) '04.', isnull(p.[5],0) '05.', isnull(p.[6],0) '06.', isnull(Felev,0) 'felev', [9]+[10]+[11]+[12]+[1]+[2]+[3]+[4]+[5]+[6] 'osszesen', d.id Rendez FROM @Mulasztasok m LEFT JOIN (SELECT * FROM (SELECT TanuloId, Honap, Id, IgazolasTipus, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (COUNT(ID) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv )p ON p.TanuloId=m.Tanulo AND p.igazoltE = m.IgazoltE AND p.Tipus = m.Tipus LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.id = m.Tipus AND d.TOROLT = 'F' AND d.C_TANEVID = @tanevId LEFT JOIN (SELECT COUNT(Id) Felev, IgazoltE, TanuloId Tanulo, IgazolasTipus FROM #mulasztasTmp WHERE Datum <= @FelevVege GROUP BY IgazoltE, TanuloId, IgazolasTipus )felev ON felev.tanulo=m.Tanulo AND felev.igazoltE=m.IgazoltE AND felev.IgazolasTipus=m.Tipus UNION --Összes SELECT s.id, 'mulasztás', isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.', isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.', isnull(Felev,0) 'felev', [9]+[10]+[11]+[12]+[1]+[2]+[3]+[4]+[5]+[6] 'osszesen', 1 Rendez FROM #students s LEFT JOIN (SELECT * FROM (SELECT Id, TanuloId, Honap FROM #mulasztasTmp WHERE IgazoltE IN ('T', 'F') AND Tipus = 1500) a PIVOT (COUNT(ID) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv )ni on ni.TanuloId=s.Id LEFT JOIN (SELECT COUNT(Id) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE IN ('T', 'F') AND Tipus = 1500 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id UNION --igazolt SELECT s.id, 'igazolt', isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.', isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.', isnull(Felev,0) 'felev', [9]+[10]+[11]+[12]+[1]+[2]+[3]+[4]+[5]+[6] 'osszesen', 2 Rendez FROM #students s LEFT JOIN (SELECT * FROM (SELECT Id, Honap, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (COUNT(ID) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv WHERE IgazoltE = 'T' AND Tipus = 1500 )ni on ni.TanuloId=s.Id LEFT JOIN (SELECT COUNT(Id) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'T' AND Tipus = 1500 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id UNION --igazolatlan SELECT s.id, 'igazolatlan', isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.', isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.', isnull(Felev,0) 'felev', [9]+[10]+[11]+[12]+[1]+[2]+[3]+[4]+[5]+[6] 'osszesen', 4999 Rendez FROM #students s LEFT JOIN (SELECT * FROM (SELECT Id, Honap, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (COUNT(ID) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv WHERE IgazoltE = 'F' AND Tipus = 1500 )ni on ni.TanuloId=s.Id LEFT JOIN (SELECT COUNT(Id) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'F' AND Tipus = 1500 AND Datum <= @FelevVege GROUP BY TanuloId, IgazolasTipus) felev on felev.TanuloId=s.id --késés UNION SELECT s.ID, 'késés (p)', isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.', isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.', isnull(Felev,0) 'felev', isnull(ni.[9],0)+isnull(ni.[10],0)+isnull(ni.[11],0)+isnull(ni.[12],0)+ isnull(ni.[1],0)+ isnull(ni.[2],0)+isnull(ni.[3],0)+isnull(ni.[4],0)+isnull(ni.[5],0)+isnull(ni.[6],0) 'osszesen', 5000 Rendez FROM #students s LEFT JOIN (SELECT * FROM (SELECT KesesPercben, Honap, TanuloId FROM #mulasztasTmp WHERE IgazoltE IN ('T', 'F') AND Tipus = 1499) a PIVOT (SUM(KesesPercben) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv)ni on ni.TanuloId=s.Id LEFT JOIN (SELECT SUM(KesesPercben) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE IN ('T', 'F') AND Tipus = 1499 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id UNION --igazolt select s.id, '* igazolt (p)', isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.', isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.', isnull(Felev,0) 'felev', isnull(ni.[9],0)+isnull(ni.[10],0)+isnull(ni.[11],0)+isnull(ni.[12],0)+ isnull(ni.[1],0)+ isnull(ni.[2],0)+isnull(ni.[3],0)+isnull(ni.[4],0)+isnull(ni.[5],0)+isnull(ni.[6],0)'osszesen', 5001 Rendez from #students s LEFT JOIN (SELECT * FROM (SELECT KesesPercben, Honap, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (SUM(KesesPercben) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv WHERE IgazoltE = 'T' AND Tipus = 1499)ni on ni.TanuloId=s.Id LEFT JOIN (SELECT SUM(KesesPercben) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'T' AND Tipus = 1499 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id UNION --igazolatlan select s.id, '* igazolatlan (p)', isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.', isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.', isnull(Felev,0) 'felev', isnull(ni.[9],0)+isnull(ni.[10],0)+isnull(ni.[11],0)+isnull(ni.[12],0)+ isnull(ni.[1],0)+ isnull(ni.[2],0)+isnull(ni.[3],0)+isnull(ni.[4],0)+isnull(ni.[5],0)+isnull(ni.[6],0) 'osszesen', 5002 Rendez from #students s LEFT JOIN (SELECT * FROM (SELECT KesesPercben, Honap, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (SUM(KesesPercben) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv WHERE IgazoltE = 'F' AND Tipus = 1499)ni on ni.TanuloId=s.Id LEFT JOIN (SELECT SUM(KesesPercben) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'F' AND Tipus = 1499 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id )Mulasztas order by Rendez declare @gondviselok table (Id int) insert into @gondviselok select g.ID from #students s left join T_GONDVISELO_OSSZES g on g.C_TANULOID=s.id /*gondviselő elérhetőségei */ SELECT s.Id Id , g.c_nev C_NEV , cim.cimTipus C_CIMTIPUSA , cim.OsszetettCim+' ('+cim.cimTipus+')' C_OSSZETETTCIM , telefon.Telefonszam C_TELEFONSZAM , email.Email C_EMAILCIM FROM #students s LEFT JOIN T_GONDVISELO_OSSZES g on g.c_tanuloid=s.id LEFT JOIN (SELECT c.c_gondviseloid Gondviselo , c.C_IRANYITOSZAM+', '+c.C_VAROS+', '+c_kozterulet+' '+kozteruletJellege.c_name+' '+c_hazszam OsszetettCim , cimTipus.c_name cimTipus FROM T_CIM_OSSZES c INNER JOIN (SELECT DISTINCT ID, C_NAME FROM T_DICTIONARYITEMBASE_OSSZES d) kozteruletJellege ON kozteruletJellege.Id=c.C_KOZTERULETJELLEGE INNER JOIN (SELECT DISTINCT ID, C_NAME FROM T_DICTIONARYITEMBASE_OSSZES d) cimTipus ON cimTipus.Id=c.c_cimtipusa WHERE c.TOROLT='F' and c.C_GONDVISELOID IN (SELECT ID FROM @gondviselok)) cim ON cim.Gondviselo=g.Id LEFT JOIN (SELECT C_GONDVISELOID Gondviselo, C_TELEFONSZAM Telefonszam FROM T_TELEFON_OSSZES WHERE TOROLT='F' ) telefon ON telefon.Gondviselo=g.Id LEFT JOIN (SELECT C_GONDVISELOID Gondviselo, C_EMAILCIM Email from T_EMAIL_OSSZES where TOROLT='F') email ON email.Gondviselo=g.Id /*TANULÓ osztályzatai*/ IF @fuggolegesTantargyak = 1 BEGIN SET @pivotList = null; SET @selectList = null; SET @sql = null; DECLARE @columnList nvarchar(max); SELECT @pivotList = ISNULL(@pivotList + ', ', '') + '[' + CAST(t.TantargyId AS varchar(6)) + ']', @selectList = ISNULL(@selectList + ', ', '') + '[' + CAST(t.TantargyId AS varchar(6)) + '] AS [' + t.TantargyNev + ']', @columnList = ISNULL(@columnList + ', ', '') + '[' + CAST(t.TantargyId AS varchar(6)) + '] nvarchar(250) ' FROM ( SELECT DISTINCT TantargyId, TantargyNev FROM #megtartottOrak) t SET @sql = ' DECLARE @masodikFelev datetime SELECT TOP 1 @masodikFelev = DATEADD(d, 1, C_DATUM) FROM T_TANEVRENDJE_OSSZES WHERE T_TANEVRENDJE_OSSZES.TOROLT=''F'' AND C_NAPTIPUSA= 1400 --Első félév vége and torolt=''F'' and c_intezmenyId=@intezmenyId DECLARE @idoszak TABLE ( id int primary key, period varchar(10), startdate datetime, enddate datetime ) INSERT INTO @idoszak ( id ,period ,startdate ,enddate ) SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS id ,IIF(MONTH(n.C_NAPDATUMA) <> 1, CAST(FORMAT(C_NAPDATUMA, ''MM'') AS varchar(2)) + ''.'', ''1/I'') AS period ,DATEFROMPARTS ( YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA), 1 ) AS startdate ,IIF(MONTH(n.C_NAPDATUMA) = 1, @masodikFelev, DATEADD(m, 1, DATEFROMPARTS ( YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA), 1 )) ) AS enddate FROM T_NAPTARINAP_OSSZES n INNER JOIN T_TANEV_OSSZES te ON te.ID = n.C_TANEVID WHERE MONTH(n.C_NAPDATUMA) IN (1, 9, 10, 11, 12) AND n.C_TANEVID = @tanevId GROUP BY YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA), FORMAT(C_NAPDATUMA, ''MM'') ORDER BY YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA) INSERT INTO @idoszak ( id ,period ,startdate ,enddate ) SELECT 6 + ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS id ,IIF(MONTH(n.C_NAPDATUMA) <> 1, CAST(FORMAT(C_NAPDATUMA, ''MM'') AS varchar(2)) + ''.'', ''1/II'') AS period ,IIF(MONTH(n.C_NAPDATUMA) = 1, @masodikFelev, DATEFROMPARTS ( YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA), 1 )) AS startdate ,DATEADD(m, 1, DATEFROMPARTS (YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA), 1 )) AS enddate FROM T_NAPTARINAP_OSSZES n INNER JOIN T_TANEV_OSSZES te ON te.ID = n.C_TANEVID WHERE MONTH(n.C_NAPDATUMA) BETWEEN 1 AND 6 AND n.C_TANEVID = @tanevId GROUP BY YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA), FORMAT(C_NAPDATUMA, ''MM'') ORDER BY YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA) INSERT INTO @idoszak (id, period) VALUES (6, ''Félév''), (13, ''Év vége'') DECLARE @jegyek TABLE ( periodId int, tanuloId int ' + ISNULL(',' + @columnList, '') + ' ) INSERT INTO @jegyek SELECT id, tanuloID, ' + @pivotList + ' FROM ( SELECT i.id, e.C_TANULOID AS tanuloID, e.C_TANTARGYID as tantargyID, STUFF(( SELECT '', '' + ISNULL(CAST (C_SZAZALEK AS varchar(5)) + ''%'', CAST(sd.C_VALUE AS varchar(5))) FROM @idoszak si LEFT JOIN T_TANULOERTEKELES_OSSZES se ON se.C_ERTEKELESDATUM >= si.startdate AND se.C_ERTEKELESDATUM < si.enddate and se.torolt=''F'' and se.c_tanevId=@tanevId AND se.C_TANTARGYID = e.C_TANTARGYID AND se.C_ERTEKELESTIPUSA = e.C_ERTEKELESTIPUSA AND se.C_TANULOID = e.C_TANULOID LEFT JOIN T_DICTIONARYITEMBASE_OSSZES sd ON sd.ID = se.C_OSZTALYZAT AND sd.C_TANEVID=se.C_TANEVID AND sd.C_INTEZMENYID=se.C_INTEZMENYID LEFT JOIN T_OSZTALYZATERTEKELES_OSSZES oe ON oe.ID=SE.ID AND C_SZAZALEK IS NOT NULL WHERE i.ID = si.ID AND C_ERTEKELESDATUM >= BelepesDatum AND (C_ERTEKELESDATUM <= KilepesDatum OR KilepesDatum IS NULL) FOR XML PATH(''''), TYPE).value(''.'', ''varchar(max)''), 1, 2, '''') AS Osztalyzat FROM T_TANULOERTEKELES_OSSZES e INNER JOIN #students s ON s.id = e.C_TANULOID INNER JOIN @idoszak i ON e.C_ERTEKELESDATUM >= i.startdate AND e.C_ERTEKELESDATUM < i.enddate WHERE e.C_ERTEKELESTIPUSA = 1518 /* Évközi jegy/értékelés */ AND C_ERTEKELESDATUM >= BelepesDatum AND (C_ERTEKELESDATUM <= KilepesDatum OR KilepesDatum IS NULL) AND e.c_tanevId=@tanevId AND e.TOROLT = ''F'' GROUP BY e.C_TANULOID, e.C_TANTARGYID, e.C_ERTEKELESTIPUSA, i.id, BelepesDatum, KilepesDatum UNION ALL SELECT IIF(e.C_ERTEKELESTIPUSA = 1519, 6, 13) ,e.C_TANULOID ,e.C_TANTARGYID ,CAST(MIN(d.C_VALUE) AS varchar(1)) FROM #students s INNER JOIN T_TANULOERTEKELES_OSSZES e ON e.C_TANULOID = s.id AND e.C_ERTEKELESTIPUSA IN (1519, 1520) INNER JOIN (select distinct id, c_tanevid, c_value from T_DICTIONARYITEMBASE_OSSZES) d ON d.id = e.C_OSZTALYZAT AND d.C_TANEVID = e.C_TANEVID WHERE e.TOROLT=''F'' AND C_ERTEKELESDATUM >= BelepesDatum AND (C_ERTEKELESDATUM <= KilepesDatum OR KilepesDatum IS NULL) GROUP BY e.C_TANULOID, e.C_TANTARGYID, e.C_ERTEKELESTIPUSA ) asd PIVOT ( MAX(Osztalyzat) FOR tantargyID IN (' + @pivotList + ') ) AS pvt SELECT p.id AS periodusId, p.period AS periodusNev, s.id tanuloID, msz.mag Magatartás, msz.szorg Szorgalom, ' + @selectList + ' FROM @idoszak p CROSS JOIN #students s LEFT JOIN ( SELECT i.id as periodusId, s.id tanuloID, m.C_NAME mag, sz.C_NAME szorg FROM T_TANULOERTEKELES_OSSZES e INNER JOIN T_OSZTALYFONOKIERTEKELES_OSSZES oe on oe.ID = e.id and oe.torolt=''F'' --and oe.c_alintezmenyId=@intezmenyId and oe.c_altanevId=@tanevId INNER JOIN T_DICTIONARYITEMBASE_OSSZES m ON m.ID = oe.C_MAGATARTAS AND m.C_TANEVID = oe.C_ALTANEVID INNER JOIN T_DICTIONARYITEMBASE_OSSZES sz ON sz.id = oe.C_SZORGALOM AND sz.C_TANEVID = oe.C_ALTANEVID INNER JOIN @idoszak i ON e.C_ERTEKELESDATUM >= i.startdate AND e.C_ERTEKELESDATUM < i.enddate INNER JOIN #students s ON s.id = e.C_TANULOID WHERE e.C_ERTEKELESTIPUSA = 1518 AND e.torolt=''F'' AND e.c_intezmenyId=@intezmenyId AND e.c_tanevId=@tanevId AND C_ERTEKELESDATUM >= BelepesDatum AND (C_ERTEKELESDATUM <= KilepesDatum OR KilepesDatum IS NULL) GROUP BY i.id, s.id, m.C_NAME, sz.C_NAME UNION ALL SELECT IIF(e.C_ERTEKELESTIPUSA = 1519, 6, 13), e.C_TANULOID, ISNULL(m.C_NAME, ISNULL(e.C_ERTEKELESSZOVEG, mJEGY.C_NAME)) mag, ISNULL(sz.C_NAME, ISNULL(e.C_ERTEKELESSZOVEG, szJEGY.C_NAME)) szorg FROM T_TANULOERTEKELES_OSSZES e INNER JOIN #students s ON e.C_TANULOID = s.id AND e.C_ERTEKELESTIPUSA IN (1519, 1520) INNER JOIN T_OSZTALYFONOKIERTEKELES_OSSZES oe on oe.ID = e.id and oe.torolt=''F'' and oe.c_alintezmenyId=@intezmenyId and oe.c_altanevId=@tanevId LEFT JOIN T_DICTIONARYITEMBASE_OSSZES m ON m.ID = oe.C_MAGATARTAS AND m.C_TANEVID = oe.C_ALTANEVID LEFT JOIN T_DICTIONARYITEMBASE_OSSZES sz ON sz.id = oe.C_SZORGALOM AND sz.C_TANEVID = oe.C_ALTANEVID LEFT JOIN T_DICTIONARYITEMBASE_OSSZES mJEGY ON mJEGY.ID=e.C_OSZTALYZAT AND mJEGY.C_TANEVID = @tanevId LEFT JOIN T_DICTIONARYITEMBASE_OSSZES szJEGY ON szJEGY.ID=e.C_OSZTALYZAT AND szJEGY.C_TANEVID = @tanevId WHERE e.C_ERTEKELESTIPUSA IN (1519, 1520) AND C_ERTEKELESDATUM >= BelepesDatum AND (C_ERTEKELESDATUM <= KilepesDatum OR KilepesDatum IS NULL) AND e.TOROLT=''F'' GROUP BY e.C_ERTEKELESTIPUSA, e.C_TANULOID, m.C_NAME, e.C_ERTEKELESSZOVEG, mJEGY.C_NAME, sz.C_NAME, szJEGY.C_NAME ) msz ON msz.periodusId = p.id AND msz.tanuloID = s.id LEFT JOIN @jegyek tbl ON tbl.periodId = p.ID AND tbl.tanuloID = s.id ORDER BY s.id, p.id' IF (@pivotList IS NULL) BEGIN SELECT 0 AS tanuloId END ELSE BEGIN EXEC sp_executesql @sql, N'@osztaly int, @intezmenyId int, @tanevId int', @osztalyId, @intezmenyId, @tanevId END END ELSE BEGIN DECLARE @FelevVegeHonap INT, @FelevVegeNap INT SELECT @FelevVegeHonap = DATEPART(mm, C_DATUM) ,@FelevVegeNap = DATEPART(dd, C_DATUM) FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1400 AND TOROLT = 'F' AND C_TANEVID = @tanevid SELECT * INTO #magatartasSzorgalomTMP FROM (SELECT 'Magatartás' Tipus ,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum)) Honap ,TanuloId ,Magatartas Ertekeles FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE Magatartas IS NOT NULL AND Tipusa = 1518 UNION ALL SELECT 'Szorgalom' ,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum)) Honap ,TanuloId ,Szorgalom FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE Szorgalom IS NOT NULL AND Tipusa = 1518 UNION ALL SELECT 'Szorgalom' ,15 Honap ,TanuloId ,Szorgalom FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE Szorgalom IS NOT NULL AND Tipusa = 1519 UNION ALL SELECT 'Magatartás' ,15 Honap ,TanuloId ,Magatartas FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE Magatartas IS NOT NULL AND Tipusa = 1519 UNION ALL SELECT 'Szorgalom' ,16 Honap ,TanuloId ,Szorgalom FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE Szorgalom IS NOT NULL AND Tipusa = 1520 UNION ALL SELECT 'Magatartás' ,16 Honap ,TanuloId ,Magatartas FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE Magatartas IS NOT NULL AND Tipusa = 1520 UNION ALL SELECT 'Magatartás' Tipus ,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum)) Honap ,TanuloId ,CONVERT(NVARCHAR(MAX),Osztalyzat) FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE Magatartas IS NULL AND TantargyId IS NULL AND Tipusa = 1518 UNION ALL SELECT 'Szorgalom' Tipus ,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum)) Honap ,TanuloId ,CONVERT(NVARCHAR(MAX),Osztalyzat) FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE Szorgalom IS NULL AND TantargyId IS NULL AND Tipusa = 1518 UNION ALL SELECT 'Magatartás' Tipus ,15 Honap ,TanuloId ,CONVERT(NVARCHAR(MAX),Osztalyzat) FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE Magatartas IS NULL AND TantargyId IS NULL AND Tipusa = 1519 UNION ALL SELECT 'Szorgalom' Tipus ,15 Honap ,TanuloId ,CONVERT(NVARCHAR(MAX),Osztalyzat) FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE Szorgalom IS NULL AND TantargyId IS NULL AND Tipusa = 1519 UNION ALL SELECT 'Magatartás' Tipus ,16 Honap ,TanuloId ,CONVERT(NVARCHAR(MAX),Osztalyzat) FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE Magatartas IS NULL AND TantargyId IS NULL AND Tipusa = 1520 UNION ALL SELECT 'Szorgalom' Tipus ,16 Honap ,TanuloId ,CONVERT(NVARCHAR(MAX),Osztalyzat) FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE Szorgalom IS NULL AND TantargyId IS NULL AND Tipusa = 1520 )magszorg SELECT DISTINCT Honap ,TanuloId ,Tipus ,STUFF(( SELECT ', ' + CAST(Ertekeles AS nvarchar(max)) FROM #magatartasSzorgalomTMP bmsz WHERE msz.TanuloId = bmsz.TanuloId AND msz.Tipus = bmsz.Tipus AND msz.Honap = bmsz.Honap FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles ,IIF(Tipus = 'Magatartás', 0, 1) Rendez INTO #magatartasSzorgalom FROM #magatartasSzorgalomTMP msz SELECT * INTO #jegyekTMP FROM (SELECT IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum)) Honap ,TanuloId ,TantargyId ,ISNULL(CONVERT(NVARCHAR(MAX),Osztalyzat), Szazalek) Ertekeles ,TargyKategoriaId Rendez FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE TantargyId IS NOT NULL AND SzovegesErtekeles IS NULL AND Tipusa = 1518 UNION ALL SELECT 15 Honap ,TanuloId ,TantargyId ,ISNULL(CONVERT(NVARCHAR(MAX),Osztalyzat), Szazalek) Ertekeles ,TargyKategoriaId FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE TantargyId IS NOT NULL AND SzovegesErtekeles IS NULL AND Tipusa = 1519 UNION ALL SELECT 16 Honap ,TanuloId ,TantargyId ,ISNULL(CONVERT(NVARCHAR(MAX),Osztalyzat), Szazalek) Ertekeles ,TargyKategoriaId FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid) WHERE TantargyId IS NOT NULL AND SzovegesErtekeles IS NULL AND Tipusa = 1520 )jegyek SELECT DISTINCT Honap ,TanuloId ,TantargyId ,STUFF(( SELECT ', ' + CAST(Ertekeles AS nvarchar(max)) FROM #jegyekTMP bj WHERE j.TanuloId = bj.TanuloId AND j.TantargyId = bj.TantargyId AND j.Honap = bj.Honap FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles ,Rendez INTO #jegyek FROM #jegyekTMP j SELECT * FROM (SELECT * FROM #magatartasSzorgalom PIVOT (MAX(Ertekeles) FOR Honap IN ([9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16])) piv UNION ALL SELECT TanuloId TanuloId ,C_NEV TantargyNev ,Rendez ,[9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16] FROM #jegyek INNER JOIN (SELECT Id, C_NEV FROM T_TANTARGY_OSSZES) t ON t.Id = TantargyId PIVOT (MAX(Ertekeles) FOR Honap IN ([9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16])) piv )vegleges ORDER BY TanuloId, Rendez, Tipus DROP TABLE #jegyekTMP DROP TABLE #jegyek DROP TABLE #magatartasSzorgalomTMP DROP TABLE #magatartasSzorgalom END /* TANULÓ záradékai */ SELECT students.ID tanuloId ,tanuloCsoport.C_ZARADEK zaradek FROM #students students INNER JOIN T_TANULOCSOPORT_OSSZES tanuloCsoport on students.ID = tanuloCsoport.C_TANULOID WHERE tanuloCsoport.C_OSZTALYCSOPORTID = @osztalyId AND TOROLT = 'F' /*Szöveges minősítések*/ SELECT * FROM ( SELECT s.id tanuloId ,szoveges.Honap ,szoveges.Tantargy ,szoveges.Ertekeles ,szoveges.Tipus FROM #students s LEFT JOIN (SELECT C_TANULOID tanuloId ,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, C_ERTEKELESDATUM))+'. hónap]' Honap ,IIF(t.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + t.C_NEV + ')', t.C_NEV) Tantargy ,C_ERTEKELESSZOVEG Ertekeles ,C_NAME Tipus FROM T_TANULOERTEKELES_OSSZES te INNER JOIN T_TANTARGY_OSSZES t ON t.ID=te.C_TANTARGYID INNER JOIN #students s ON s.ID = C_TANULOID AND te.C_ERTEKELESDATUM BETWEEN s.BelepesDatum AND s.KilepesDatum INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = te.C_ERTEKELESTIPUSA AND d.C_TANEVID = @tanevId AND d.TOROLT = 'F' WHERE C_ERTEKELESSZOVEG IS NOT NULL AND te.C_TANEVID=@tanevId AND te.TOROLT='F' ) szoveges on szoveges.TANULOID=s.Id UNION SELECT s.id tanuloId ,szoveges.Honap ,szoveges.Tantargy ,szoveges.Ertekeles ,szoveges.Tipus FROM #students s LEFT JOIN (SELECT C_TANULOID tanuloId ,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, C_ERTEKELESDATUM))+'. hónap]' Honap ,'Magatartás / szorgalom' Tantargy ,C_ERTEKELESSZOVEG Ertekeles ,C_NAME Tipus FROM T_TANULOERTEKELES_OSSZES te INNER JOIN T_OSZTALYFONOKIERTEKELES_OSSZES oe ON oe.Id = te.Id INNER JOIN #students s ON s.ID = C_TANULOID AND te.C_ERTEKELESDATUM BETWEEN s.BelepesDatum AND s.KilepesDatum INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = te.C_ERTEKELESTIPUSA AND d.C_TANEVID = @tanevId AND d.TOROLT = 'F' WHERE C_ERTEKELESSZOVEG IS NOT NULL AND te.C_TANEVID=@tanevId AND te.TOROLT='F' ) szoveges on szoveges.TANULOID=s.Id )a ORDER BY Honap, Tantargy DROP TABLE #students DROP TABLE #osztalycsoportok DROP TABLE #OsztalyVagyTanoraiCsoport DROP TABLE #megtartottOrak DROP TABLE #OraSorszam DROP TABLE #mulasztasTmp END GO