DROP PROCEDURE IF EXISTS dbo.uspGetSzakmaiGyNaplo GO CREATE PROCEDURE [dbo].[uspGetSzakmaiGyNaplo] @tanevId int ,@intezmenyId int ,@csoportId int ,@iskolaErdekuSzamit bit ,@pDatum date AS BEGIN DECLARE @feladatKategoriaId int = (SELECT C_FELADATKATEGORIAID FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @csoportId AND TOROLT = 'F') DECLARE @tanevUtolsoNapja datetime = (SELECT DATEADD(DAY,-1,C_UTOLSONAP) FROM T_TANEV_OSSZES WHERE ID = @tanevId) SET NOCOUNT ON; CREATE TABLE #Tanulo ( Tanulo int ,Osztaly nvarchar(max) ,OsztalyId int ,TanuloNeve nvarchar(255) ,TanuloOktAzon nvarchar(20) ,BelepesDatum DATETIME ) CREATE TABLE #OraSorszam ( TanitasioraId int ,OraSorszam int ) CREATE TABLE #mulasztas ( Csoport nvarchar(1) ,Tanulo int ,Oraszam int ) CREATE TABLE #hianyzas ( Tanulo int ,Osztaly nvarchar(max) ,Honap int ,IgazoltE nvarchar(1) ) CREATE TABLE #hianyzasOssz ( Osztaly int ,Honap int ,IgazoltE nvarchar(1) ) CREATE TABLE #igazoltH (Csoport int, [1] int, [2] int, [3] int, [4] int, [5] int, [6] int, [7] int, [8] int, [9] int, [10] int, [11] int, [12] int) CREATE TABLE #igazolatlanH (Csoport int, [1] int, [2] int, [3] int, [4] int, [5] int, [6] int, [7] int, [8] int, [9] int, [10] int, [11] int, [12] int) CREATE TABLE #Igazolt ( Csoport int ,Osszes int ) CREATE TABLE #IgazoltOsszesOsszes ( Csoport int ,Osszes int ) CREATE TABLE #letszam (TanitasioraId int, Letszam int) --Kezdőoldal SELECT ia.c_nev as IntezmenyNev ,dbo.fnGetDokumentumIntezmenyCime(@tanevId) as IntezmenyCim ,ia.c_omkod as OMKOD ,ia.c_igazgatoneve as IntezmenyVezeto ,ocs.c_nev NapkozisCsoport ,isnull(f.c_nyomtatasinev,'-') as CsoportVezeto ,isnull(cs.c_csoportnaploleiras,'-') as CsoportNaploLeiras ,FORMAT(cs.c_csoportnaplomegnyitasa, 'yyyy. MMMM dd.', 'hu-hu') as Megnyitas ,isnull(FORMAT(cs.c_csoportnaplozarasa, 'yyyy. MMMM dd.', 'hu-hu'),'-') as Lezaras ,t.c_nev as Tanev ,cs.c_csoportnaploleiras as Megjegyzes ,ocs.ID NapkozisCsoportId ,f.ID CsoportVezetoId ,ISNULL(ocs.C_EVFOLYAMTIPUSA, 1296) AS EvfolyamTipusa -- 1296 = Na ,ocs.C_FELADATELLATASIHELYID as FeladatEllatasiHelyId ,ocs.C_KERESZTFELEVES as OJCSJKeresztfeleves ,ocs.C_VEGZOSEVFOLYAM as CSJVegzosEvfolyamu ,cs.C_TIPUSA as CsoportTipusa FROM T_INTEZMENY_OSSZES i INNER JOIN T_INTEZMENYADATOK_OSSZES ia on ia.C_INTEZMENYID = i.ID INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.C_INTEZMENYID = i.ID INNER JOIN T_CSOPORT_OSSZES cs on cs.ID = ocs.ID LEFT JOIN T_FELHASZNALO_OSSZES f on f.ID = cs.C_CSOPORTVEZETOID INNER JOIN T_TANEV_OSSZES t on t.ID = ia.C_TANEVID WHERE i.ID = @intezmenyid AND ia.C_TANEVID = @tanevid AND ocs.ID = @csoportId --Csoport tanulóinak osztályai INSERT INTO #Tanulo SELECT tcs.C_TANULOID AS TanuloId ,osztaly.OsztalyNev AS Osztaly ,osztaly.ID AS OsztalyId ,tanuloNeve.C_NYOMTATASINEV AS TanuloNeve ,tanuloNeve.C_OKTATASIAZONOSITO AS OktAzon ,osztaly.BelepesDatuma AS BelepesDatum FROM T_TANULOCSOPORT_OSSZES tcs CROSS APPLY fnGetTanuloOsztaly(tcs.C_TANULOID, ISNULL(DATEADD(DAY,-1, tcs.C_KILEPESDATUM), @tanevUtolsoNapja), @feladatKategoriaId, 1, DEFAULT) osztaly INNER JOIN T_FELHASZNALO_OSSZES tanuloNeve on tanuloNeve.ID = tcs.C_TANULOID WHERE tcs.C_TANEVID = @tanevId AND tcs.C_OSZTALYCSOPORTID = @csoportId AND tcs.TOROLT = 'F' SELECT COUNT(DISTINCT Tanulo) AS Tanulo ,Osztaly ,OsztalyId FROM #Tanulo GROUP BY Osztaly, OsztalyId DECLARE @datum date = @pDatum INSERT INTO #OraSorszam EXEC [uspGetOraSorszamByOsztaly] @osztalyCsoportId = @csoportId ,@datum = @pDatum ,@intezmenyId = @intezmenyId ,@tanevId = @tanevId INSERT INTO #mulasztas SELECT 'x' Csoport ,tm.c_oratanuloiid Tanulo ,oes.OraSorszam AS OraSzam FROM T_TANULOMULASZTAS_OSSZES tm INNER JOIN T_TANITASIORA_OSSZES tao on tm.C_TANITASIORAKID=tao.ID and tao.C_TANEVID=@tanevid LEFT JOIN #OraSorszam oes on oes.TanitasioraId=tao.ID WHERE tao.C_OSZTALYCSOPORTID=@csoportId AND tm.TOROLT='F' AND tm.C_TANEVID=@tanevid AND tm.C_INTEZMENYID=@intezmenyid AND tm.C_TIPUS BETWEEN 1499 AND 1500 AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA <> 1533 OR C_IGAZOLASTIPUSA IS NULL)) SELECT f.c_nyomtatasinev Tanulo, tanulo.Osztaly Osztaly, m.[1], m.[2], m.[3], m.[4], m.[5], m.[6], m.[7], m.[8], m.[9], m.[10], m.[11], m.[12], m.[13], m.[14], m.[15], m.[16], m.[17], m.[18],m.[19],m.[20], m.[21], m.[22], m.[23], m.[24], m.[25], m.[26], m.[27], m.[28],m.[29],m.[30], m.[31], m.[32], m.[33], m.[34], m.[35], m.[36], m.[37], m.[38],m.[39],m.[40], m.[41], m.[42], m.[43], m.[44], m.[45], m.[46], m.[47], m.[48],m.[49],m.[50], osszesM.Osszes, tanulo.BelepesDatum FROM #Tanulo tanulo LEFT JOIN (select * from #mulasztas mulasztas pivot (max(Csoport) for Oraszam in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18],[19],[20], [21], [22], [23], [24], [25], [26], [27], [28],[29],[30], [31], [32], [33], [34], [35], [36], [37], [38],[39],[40], [41], [42], [43], [44], [45], [46], [47], [48],[49],[50])) pv)m on m.Tanulo=tanulo.Tanulo INNER JOIN T_FELHASZNALO_OSSZES f on f.id=tanulo.Tanulo LEFT JOIN (select Tanulo, count(Csoport) as Osszes from #mulasztas m group by Tanulo) osszesM on osszesM.Tanulo=tanulo.Tanulo order by f.c_nyomtatasinev --napló INSERT INTO #letszam SELECT tao.Id TanitasioraId ,COUNT(ISNULL(tcs.ID, 0)) as Letszam FROM T_TANITASIORA_OSSZES tao LEFT JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = tao.C_OSZTALYCSOPORTID AND (tcs.C_BELEPESDATUM <= tao.C_DATUM AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > tao.C_DATUM)) WHERE tao.C_OSZTALYCSOPORTID = @csoportId AND tao.TOROLT = 'F' GROUP BY tao.Id SELECT tao.Id TanitasioraId ,dbo.fnGetDokumentumDatumFormatum(tao.C_DATUM) Datum ,tao.C_ORATULAJDONOSID PedagogusId ,ISNULL('Helyettesítő: ' + helyettesito.C_NYOMTATASINEV + IIF(tao.C_HELYETTESITESOKA IS NOT NULL, ' (' + tao.C_HELYETTESITESOKA + ')', ''), pedagogus.C_NYOMTATASINEV) PedagogusNev ,IIF(C_MEGTARTOTT = 'T', REPLACE(REPLACE(REPLACE(C_TEMA, CHAR(0x0007),''), CHAR(0x000B), ''), CHAR(0x0002), ''), 'Elmaradt' + IIF(tao.C_MEGJEGYZES IS NOT NULL, ' - ' + tao.C_MEGJEGYZES, '')) Tema ,letszam.Letszam - ISNULL(hianyzo.Hianyzok, 0) as Letszam ,IIF(tantargy.C_NEV <> tantargy.C_NEVNYOMTATVANYBAN AND tantargy.C_NEVNYOMTATVANYBAN IS NOT NULL, tantargy.C_NEVNYOMTATVANYBAN + ' (' + tantargy.C_NEV + ')', tantargy.C_NEV) TantargyNev ,tao.C_TANTARGYID TantargyId ,tao.C_MEGTARTOTT Megtartott ,tao.C_OSZTALYCSOPORTID OsztalyCsoportId INTO #megtartottOrak FROM T_TANITASIORA_OSSZES tao LEFT JOIN #letszam letszam ON letszam.TanitasioraId = tao.ID LEFT JOIN ( SELECT tm.c_tanitasiorakid as Tanitasiora ,count(tm.c_oratanuloiid) Hianyzok FROM T_TANULOMULASZTAS_OSSZES tm WHERE tm.TOROLT='F' GROUP BY tm.c_tanitasiorakid) hianyzo ON hianyzo.Tanitasiora=tao.id INNER JOIN T_FELHASZNALO_OSSZES pedagogus ON pedagogus.ID = tao.C_TANARID LEFT JOIN T_FELHASZNALO_OSSZES helyettesito ON helyettesito.ID = tao.C_HELYETTESITOTANARID INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.ID = tao.C_TANTARGYID AND tantargy.C_GYAKORLATI = 'T' WHERE C_OSZTALYCSOPORTID = @csoportId AND tao.TOROLT = 'F' ORDER BY tao.C_DATUM SELECT * FROM #megtartottOrak --hiányzások INSERT INTO #hianyzas SELECT Tanulo ,Osztaly ,datepart(month,tao.c_datum) as Honap ,tm.c_igazolt as IgazoltE FROM #Tanulo tanulo LEFT JOIN T_TANULOMULASZTAS_OSSZES tm on tm.C_ORATANULOIID=tanulo.Tanulo AND tm.TOROLT='F' AND tm.C_TANEVID=@tanevid LEFT JOIN T_TANITASIORA_OSSZES tao on tao.ID=tm.C_TANITASIORAKID AND tao.C_TANEVID=@tanevid WHERE tao.C_OSZTALYCSOPORTID=@csoportId AND tao.TOROLT='F' AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA <> 1533 OR C_IGAZOLASTIPUSA IS NULL)) SELECT f.c_nyomtatasinev as Tanulo, tanulo.Osztaly Osztaly, --igazolt iif(i.[1]=0,null, i.[1]) as [1], iif(i.[2]=0,null, i.[2]) as [2], iif(i.[3]=0,null, i.[3]) as [3], iif(i.[4]=0,null, i.[4]) as [4], iif(i.[5]=0,null, i.[5]) as [5],iif(i.[6]=0,null, i.[6]) as [6], iif(i.[7]=0,null, i.[7]) as [7], iif(i.[8]=0,null, i.[8]) as [8], iif(i.[9]=0,null, i.[9]) as [9], iif(i.[10]=0,null, i.[10]) as [10], iif(i.[11]=0,null, i.[11]) as [11], iif(i.[12]=0,null, i.[12]) as [12], --igazolatlan iif(ni.[1]=0,null, ni.[1]) as n1, iif(ni.[2]=0,null, ni.[2]) as n2, iif(ni.[3]=0,null, ni.[3]) as n3, iif(ni.[4]=0,null, ni.[4]) as n4, iif(ni.[5]=0,null, ni.[5]) as n5,iif(ni.[6]=0,null, ni.[6]) as n6, iif(ni.[7]=0,null, ni.[7]) as n7, iif(ni.[8]=0,null, ni.[8]) as n8, iif(ni.[9]=0,null, ni.[9]) as n9, iif(ni.[10]=0,null, ni.[10]) as n10, iif(ni.[11]=0,null, ni.[11]) as n11, iif(ni.[12]=0,null, ni.[12]) as n12, igazolt.Igazolt, igazolatlan.Igazolatlan, tanulo.BelepesDatum FROM #Tanulo tanulo LEFT JOIN (select pv.* from #hianyzas hianyzas pivot (count(Honap) for Honap in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]))pv where pv.IgazoltE='T')i on tanulo.Tanulo=i.Tanulo LEFT JOIN (select pv.* from #hianyzas hianyzas pivot (count(Honap) for Honap in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]))pv where pv.IgazoltE='F')ni on tanulo.Tanulo=ni.Tanulo LEFT JOIN (select hianyzas.Tanulo Tanulo, count(IgazoltE) as Igazolt from #hianyzas hianyzas where hianyzas.IgazoltE='T' group by hianyzas.Tanulo) igazolt on igazolt.Tanulo=tanulo.Tanulo LEFT JOIN (select hianyzas.Tanulo Tanulo, count(IgazoltE) as Igazolatlan from #hianyzas hianyzas where hianyzas.IgazoltE='F' group by hianyzas.Tanulo) igazolatlan on igazolatlan.Tanulo=tanulo.Tanulo INNER JOIN T_FELHASZNALO_OSSZES f on f.id=tanulo.Tanulo --Mulasztások összesen insert into #hianyzasOssz select @csoportId, datepart(month,tao.c_datum) as Honap, tm.c_igazolt as IgazoltE from #Tanulo tanulo left join T_TANULOMULASZTAS_OSSZES tm on tm.c_oratanuloiid=tanulo.Tanulo and tm.torolt='F' and tm.c_tanevid=@tanevid left join T_TANITASIORA_OSSZES tao on tao.id=tm.c_tanitasiorakid and tao.c_tanevid=@tanevid where tao.c_osztalycsoportid=@csoportId and tao.torolt='F' AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA <> 1533 OR C_IGAZOLASTIPUSA IS NULL)) insert into #igazoltH select @csoportId, iif(i.[1]=0,null, i.[1]) as [1], iif(i.[2]=0,null, i.[2]) as [2], iif(i.[3]=0,null, i.[3]) as [3], iif(i.[4]=0,null, i.[4]) as [4], iif(i.[5]=0,null, i.[5]) as [5],iif(i.[6]=0,null, i.[6]) as [6], iif(i.[7]=0,null, i.[7]) as [7], iif(i.[8]=0,null, i.[8]) as [8], iif(i.[9]=0,null, i.[9]) as [9], iif(i.[10]=0,null, i.[10]) as [10], iif(i.[11]=0,null, i.[11]) as [11], iif(i.[12]=0,null, i.[12]) as [12] from #hianyzasOssz ho pivot (count(Honap) for Honap in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]))i where i.IgazoltE='T' --Mulasztott órák összesen insert into #igazolatlanH select @csoportId, iif(ni.[1]=0,null, ni.[1]) as n1, iif(ni.[2]=0,null, ni.[2]) as n2, iif(ni.[3]=0,null, ni.[3]) as n3, iif(ni.[4]=0,null, ni.[4]) as n4, iif(ni.[5]=0,null, ni.[5]) as n5,iif(ni.[6]=0,null, ni.[6]) as n6, iif(ni.[7]=0,null, ni.[7]) as n7, iif(ni.[8]=0,null, ni.[8]) as n8, iif(ni.[9]=0,null, ni.[9]) as n9, iif(ni.[10]=0,null, ni.[10]) as n10, iif(ni.[11]=0,null, ni.[11]) as n11, iif(ni.[12]=0,null, ni.[12]) as n12 from #hianyzasOssz ho pivot (count(Honap) for Honap in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]))ni where ni.IgazoltE='F' select iif(i.[1]=0,null, i.[1]) as [1], iif(i.[2]=0,null, i.[2]) as [2], iif(i.[3]=0,null, i.[3]) as [3], iif(i.[4]=0,null, i.[4]) as [4], iif(i.[5]=0,null, i.[5]) as [5],iif(i.[6]=0,null, i.[6]) as [6], iif(i.[7]=0,null, i.[7]) as [7], iif(i.[8]=0,null, i.[8]) as [8], iif(i.[9]=0,null, i.[9]) as [9], iif(i.[10]=0,null, i.[10]) as [10], iif(i.[11]=0,null, i.[11]) as [11], iif(i.[12]=0,null, i.[12]) as [12], iif(ni.[1]=0,null, ni.[1]) as n1, iif(ni.[2]=0,null, ni.[2]) as n2, iif(ni.[3]=0,null, ni.[3]) as n3, iif(ni.[4]=0,null, ni.[4]) as n4, iif(ni.[5]=0,null, ni.[5]) as n5,iif(ni.[6]=0,null, ni.[6]) as n6, iif(ni.[7]=0,null, ni.[7]) as n7, iif(ni.[8]=0,null, ni.[8]) as n8, iif(ni.[9]=0,null, ni.[9]) as n9, iif(ni.[10]=0,null, ni.[10]) as n10, iif(ni.[11]=0,null, ni.[11]) as n11, iif(ni.[12]=0,null, ni.[12]) as n12 from #igazolth i left join #igazolatlanH ni on i.Csoport=ni.csoport --Mulasztó tanulók szama INSERT INTO #Igazolt SELECT @csoportId as Id ,count(Tanulo) as IgazoltOsszes FROM (select distinct tanulo from #hianyzas where IgazoltE='T')m SELECT i.Osszes IgazoltOsszes ,ni.Osszes IgazolatlanOsszes FROM #Igazolt i left join (select @csoportId as Id, count(Tanulo) as Osszes from (select distinct tanulo from #hianyzas where IgazoltE='F')m) ni on ni.Id=i.Csoport --Mulasztott órák összesen-összesen INSERT INTO #IgazoltOsszesOsszes SELECT @csoportId ,count(IgazoltE) FROM #hianyzasOssz WHERE IgazoltE='T' select ioo.Osszes IgazoltOsszesOsszes ,nioo.Osszes as IgazolatlanOsszesOsszes from #IgazoltOsszesOsszes ioo LEFT JOIN (select @csoportId as Id, count(IgazoltE) Osszes from #hianyzasOssz where IgazoltE='F') nioo on nioo.Id=ioo.Csoport --Megtartott órák száma SELECT COUNT(TantargyId) TantargyOraszam ,Tantargynev TantargyNev INTO #MegtartottOrakSzama FROM #megtartottOrak WHERE Megtartott = 'T' GROUP BY TantargyId, TantargyNev SELECT DISTINCT SUM(tmp.TantargyOraszam) OsszesTantargySzam ,STUFF(( SELECT DISTINCT ', ' + btmp.TantargyNev + '(' + CAST(btmp.TantargyOraszam AS nvarchar(MAX)) + ')' FROM #MegtartottOrakSzama btmp FOR XML PATH(''), TYPE) .value('.','nvarchar(MAX)'),1,2,'') Tantargyak FROM #MegtartottOrakSzama tmp -- Csoport tanárai SELECT targy.C_NEV TargyNev ,tanar.C_NYOMTATASINEV TanarNev ,targykategoria.C_ORDER ,tanar.ID TanarId ,tanar.C_OKTATASIAZONOSITO TanarOktAzon FROM T_FELHASZNALO_OSSZES tanar INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.C_TANARID = tanar.ID and f.TOROLT='F' and f.C_OSZTALYCSOPORTID = @csoportId INNER JOIN T_TANTARGY_OSSZES targy ON targy.ID = f.C_TANTARGYID and targy.C_GYAKORLATI = 'T' and targy.TOROLT='F' INNER JOIN T_TARGYKATEGORIATIPUS_OSSZES ON T_TARGYKATEGORIATIPUS_OSSZES.ID = targy.C_TARGYKATEGORIA INNER JOIN T_DICTIONARYITEMBASE_OSSZES targykategoria ON targykategoria.ID = T_TARGYKATEGORIATIPUS_OSSZES.ID AND targykategoria.TOROLT = 'F' AND targykategoria.C_TANEVID = @tanevId WHERE tanar.TOROLT = 'F' AND f.TOROLT = 'F' AND tanar.C_INTEZMENYID = @intezmenyid AND tanar.C_TANEVID = @tanevId GROUP BY C_ORDER, targy.C_NEV, tanar.C_NYOMTATASINEV, tanar.ID, tanar.C_OKTATASIAZONOSITO ORDER BY C_ORDER, targy.C_NEV, tanar.C_NYOMTATASINEV -- Csoport tanulói SELECT * FROM #Tanulo END GO