IF OBJECT_ID('sp_GetNemMegtartottOrakSzamaPerHet') IS NOT NULL BEGIN DROP PROCEDURE sp_GetNemMegtartottOrakSzamaPerHet END GO CREATE PROCEDURE [sp_GetNemMegtartottOrakSzamaPerHet] @osztalyId int, @intezmenyId int, @tanevId int AS BEGIN DECLARE @vegzosUtolsoNapDatuma DATE = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_TANEVID = @tanevId AND TOROLT = 'F' AND C_NAPTIPUSA = 1402) DECLARE @vegzosOsztalyokCsoportok TABLE (osztalyId INT) INSERT INTO @vegzosOsztalyokCsoportok SELECT ID FROM T_OSZTALYCSOPORT_OSSZES WHERE C_VEGZOSEVFOLYAM = 'T' AND C_TANEVID = @tanevID AND TOROLT = 'F' DECLARE @OsszesNap TABLE (Datum DATE, Hetirend INT, OrarendiNap NVARCHAR(1), OsztalyCsoportId INT) INSERT INTO @OsszesNap SELECT DISTINCT C_NAPDATUMA ,C_HETIREND ,C_ORARENDINAP ,kapcsolodo.Id FROM T_NAPTARINAP_OSSZES CROSS JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) kapcsolodo WHERE C_TANEVID = @tanevId AND TOROLT = 'F' DECLARE @TanevRendje TABLE (Datum DATE, Hetirend INT, OsztalyCsoportId INT, OrarendiNap NVARCHAR(1)) INSERT INTO @TanevRendje SELECT C_DATUM ,C_HETIREND ,kapcsolodo.Id ,C_ORARENDINAP FROM T_TANEVRENDJE_OSSZES CROSS JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) kapcsolodo WHERE C_TANEVID = @tanevId AND TOROLT = 'F' AND C_OSSZESCSOPORTRAVONATKOZIK = 'T' DECLARE @TanevRendjeOsztalyCsoportonkent TABLE (Datum DATE, Hetirend INT, OsztalyCsoportId INT, OrarendiNap NVARCHAR(1)) INSERT INTO @TanevRendjeOsztalyCsoportonkent SELECT C_DATUM ,C_HETIREND ,C_OSZTALYCSOPORTID ,C_ORARENDINAP FROM T_OSZTALYCSOPORT_TANEVRENDJE ocstr INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.ID = ocstr.C_TANEVRENDJEID INNER JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) kapcsolodo ON kapcsolodo.Id = C_OSZTALYCSOPORTID WHERE TOROLT = 'F' DECLARE @OrarendiNapok TABLE (Datum DATE, OsztalyCsoportId INT, Hetirend INT) INSERT INTO @OrarendiNapok SELECT Datum ,OsztalyCsoportId ,Hetirend FROM (SELECT OsszesNap.Datum ,OsszesNap.OsztalyCsoportId ,COALESCE(trocs.OrarendiNap, tr.OrarendiNap, OsszesNap.OrarendiNap) OrarendiNap ,COALESCE(trocs.Hetirend, tr.Hetirend, OsszesNap.Hetirend) Hetirend FROM @OsszesNap OsszesNap LEFT JOIN @TanevRendje tr ON tr.Datum = OsszesNap.Datum AND tr.OsztalyCsoportId = OsszesNap.OsztalyCsoportId LEFT JOIN @TanevRendjeOsztalyCsoportonkent trocs ON trocs.Datum = OsszesNap.Datum AND trocs.OsztalyCsoportId = OsszesNap.OsztalyCsoportId WHERE OsszesNap.OrarendiNap = 'T' OR tr.OrarendiNap = 'T' OR trocs.OrarendiNap = 'T' ) a WHERE OrarendiNap ='T' SELECT HetSorszam HetSorszama ,count(ID) NemNaplozottOrakSzama ,@osztalyId OsztalyID FROM ( SELECT Id ,HetSorszam FROM ( SELECT DISTINCT naptar.C_HETSORSZAMA HetSorszam ,oo.Id Id FROM T_ORARENDIORA_OSSZES oo INNER JOIN T_NAPTARINAP_OSSZES naptar ON ((naptar.C_NAPDATUMA >=oo.C_ORAERVENYESSEGKEZDETE AND naptar.C_NAPDATUMA < oo.C_ORAERVENYESSEGVEGE) OR (naptar.C_NAPDATUMA = oo.C_ORAERVENYESSEGKEZDETE AND naptar.C_NAPDATUMA = oo.C_ORAERVENYESSEGVEGE)) AND oo.C_HETNAPJA=naptar.C_HETNAPJA AND (naptar.C_NAPTIPUSA NOT IN (1386,1387,1389,1391,1392,1396,1397,1398,1399,1401)) INNER JOIN @OrarendiNapok OrarendiNapok ON OrarendiNapok.OsztalyCsoportId = oo.C_OSZTALYCSOPORTID AND OrarendiNapok.Datum = naptar.C_NAPDATUMA AND (OrarendiNapok.Hetirend = oo.C_HETIREND OR oo.C_HETIREND = 1554) LEFT JOIN T_TANITASIORA_OSSZES tao ON naptar.C_NAPDATUMA = tao.C_DATUM AND tao.C_ORARENDIORAGROUPID = oo.C_ORARENDIORAGROUPID AND tao.C_DATUM BETWEEN oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE AND tao.TOROLT='F' LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hely ON hely.C_HELYETTESITETTORARENDID=oo.ID AND CAST(hely.C_HELYETTESITESNAPJA AS DATE) = naptar.C_NAPDATUMA WHERE oo.TOROLT='F' AND oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId)) AND naptar.C_NAPDATUMA <= IIF(@osztalyId IN (SELECT osztalyId FROM @vegzosOsztalyokCsoportok) AND GETDATE() >= @vegzosUtolsoNapDatuma, @vegzosUtolsoNapDatuma, GETDATE()) AND tao.ID IS NULL AND hely.ID IS NULL AND (oo.C_TANORANKIVULIFOGLALKOZAS = 'F' OR oo.C_TANORANKIVULIFOGLALKOZAS IS NULL) AND oo.C_CSENGETESIRENDORAID IS NOT NULL AND naptar.C_TANEVID = @tanevId UNION SELECT naptar.C_HETSORSZAMA HetSorszam ,hi.ID Id FROM T_HELYETTESITESIIDOSZAK_OSSZES hi INNER JOIN T_ORARENDIORA_OSSZES oo on oo.Id=hi.C_HELYETTESITETTORARENDID INNER JOIN T_NAPTARINAP_OSSZES naptar on naptar.C_NAPDATUMA = CAST(hi.C_HELYETTESITESNAPJA AS DATE) AND naptar.C_TANEVID=hi.C_TANEVID AND naptar.C_INTEZMENYID=hi.C_INTEZMENYID WHERE oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId)) AND (oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA=1034) OR oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_OSZTALY_OSSZES)) AND hi.TOROLT='F' AND (oo.C_TANORANKIVULIFOGLALKOZAS = 'F' OR oo.C_TANORANKIVULIFOGLALKOZAS IS NULL) AND oo.C_CSENGETESIRENDORAID IS NOT NULL AND oo.TOROLT='F' AND hi.C_HELYETTESITESNAPJA <= IIF(oo.C_OSZTALYCSOPORTID IN (SELECT osztalyId FROM @vegzosOsztalyokCsoportok) AND GETDATE() >= @vegzosUtolsoNapDatuma, @vegzosUtolsoNapDatuma, GETDATE()) AND NOT EXISTS ( SELECT 1 FROM T_ORARENDIORA_OSSZES ooo JOIN T_TANITASIORA_OSSZES tao ON tao.C_ORARENDIORAGROUPID = ooo.C_ORARENDIORAGROUPID AND tao.C_DATUM BETWEEN ooo.C_ORAERVENYESSEGKEZDETE AND ooo.C_ORAERVENYESSEGVEGE WHERE tao.C_DATUM = CAST(hi.C_HELYETTESITESNAPJA AS DATE) AND ooo.ID=hi.C_HELYETTESITETTORARENDID AND tao.TOROLT='F' ) )a )a GROUP BY HetSorszam ORDER BY HetSorszam END GO