DROP PROCEDURE IF EXISTS dbo.sp_GetDokumentumTanitasiNapokSorszama GO CREATE PROCEDURE dbo.sp_GetDokumentumTanitasiNapokSorszama @tanevId INT, @osztalyId INT AS BEGIN SET NOCOUNT ON; /* Tanítás nélküli hétköznapok */ DECLARE @TanitasNelkuliNapokTanevRendjeTable TABLE (Datum DATE) INSERT INTO @TanitasNelkuliNapokTanevRendjeTable SELECT TanevRendje.C_DATUM FROM T_TANEVRENDJE_OSSZES TanevRendje INNER JOIN T_NAPTARINAP_OSSZES NaptariNap ON NaptariNap.C_NAPDATUMA = TanevRendje.C_DATUM AND NaptariNap.C_TANEVID = @tanevId AND NaptariNap.TOROLT = 'F' INNER JOIN T_NAPTIPUS_OSSZES Naptipus ON Naptipus.ID = TanevRendje.C_NAPTIPUSA AND Naptipus.TOROLT = 'F' AND Naptipus.C_ALTANEVID = @tanevId WHERE TanevRendje.C_TANEVID = @tanevId AND TanevRendje.TOROLT = 'F' AND TanevRendje.C_OSSZESCSOPORTRAVONATKOZIK = 'T' AND Naptipus.C_ISSORSZAMOZANDO = 'F' AND (NaptariNap.C_ALAPHETNAPJA IS NULL OR NaptariNap.C_ALAPHETNAPJA BETWEEN 1408 AND 1412) UNION SELECT TanevRendje.C_DATUM FROM T_TANEVRENDJE_OSSZES TanevRendje INNER JOIN T_NAPTARINAP_OSSZES NaptariNap ON NaptariNap.C_NAPDATUMA = TanevRendje.C_DATUM AND NaptariNap.C_TANEVID = @tanevId AND NaptariNap.TOROLT = 'F' INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE OsztalyCsoportTanevRendje ON OsztalyCsoportTanevRendje.C_TANEVRENDJEID = TanevRendje.ID INNER JOIN T_NAPTIPUS_OSSZES Naptipus ON Naptipus.ID = TanevRendje.C_NAPTIPUSA AND Naptipus.TOROLT = 'F' AND Naptipus.C_ALTANEVID = @tanevId WHERE TanevRendje.C_TANEVID = @tanevId AND TanevRendje.TOROLT = 'F' AND TanevRendje.C_OSSZESCSOPORTRAVONATKOZIK = 'F' AND Naptipus.C_ISSORSZAMOZANDO = 'F' AND OsztalyCsoportTanevRendje.C_OSZTALYCSOPORTID = @osztalyId AND (NaptariNap.C_ALAPHETNAPJA IS NULL OR NaptariNap.C_ALAPHETNAPJA BETWEEN 1408 AND 1412) /* Hétvégi tanítási napok */ DECLARE @HetvegiTanitasiNapokTanevRendjeTable TABLE (Datum DATE) INSERT INTO @HetvegiTanitasiNapokTanevRendjeTable SELECT TanevRendje.C_DATUM FROM T_TANEVRENDJE_OSSZES TanevRendje INNER JOIN T_NAPTARINAP_OSSZES NaptariNap ON NaptariNap.C_NAPDATUMA = TanevRendje.C_DATUM AND NaptariNap.C_TANEVID = @tanevId AND NaptariNap.TOROLT = 'F' INNER JOIN T_NAPTIPUS_OSSZES Naptipus ON Naptipus.ID = TanevRendje.C_NAPTIPUSA AND Naptipus.TOROLT = 'F' AND Naptipus.C_ALTANEVID = @tanevId WHERE TanevRendje.c_tanevid = @tanevId AND TanevRendje.TOROLT = 'F' AND TanevRendje.C_OSSZESCSOPORTRAVONATKOZIK = 'T' AND Naptipus.C_ISSORSZAMOZANDO = 'T' AND (NaptariNap.C_ALAPHETNAPJA IS NULL OR NaptariNap.C_ALAPHETNAPJA IN (1413, 1414)) UNION SELECT TanevRendje.C_DATUM FROM T_TANEVRENDJE_OSSZES TanevRendje INNER JOIN T_NAPTARINAP_OSSZES NaptariNap ON NaptariNap.C_NAPDATUMA = TanevRendje.C_DATUM AND NaptariNap.C_TANEVID = @tanevId AND NaptariNap.TOROLT = 'F' INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE OsztalyCsoportTanevRendje ON OsztalyCsoportTanevRendje.C_TANEVRENDJEID = TanevRendje.ID INNER JOIN T_NAPTIPUS_OSSZES Naptipus ON Naptipus.ID = TanevRendje.C_NAPTIPUSA AND Naptipus.TOROLT = 'F' AND Naptipus.C_ALTANEVID = @tanevId WHERE TanevRendje.C_TANEVID = @tanevId AND TanevRendje.TOROLT = 'F' AND TanevRendje.C_OSSZESCSOPORTRAVONATKOZIK = 'F' AND Naptipus.C_ISSORSZAMOZANDO = 'T' AND OsztalyCsoportTanevRendje.C_OSZTALYCSOPORTID = @osztalyId AND (NaptariNap.C_ALAPHETNAPJA IS NULL OR NaptariNap.C_ALAPHETNAPJA IN (1413, 1414)) /* Result */ SELECT C_NAPDATUMA FROM T_NAPTARINAP_OSSZES NaptariNap WHERE NaptariNap.TOROLT = 'F' AND C_TANEVID = @tanevId AND C_NAPDATUMA NOT IN (SELECT Datum FROM @TanitasNelkuliNapokTanevRendjeTable) AND C_ALAPHETNAPJA BETWEEN 1408 AND 1412 UNION SELECT Datum FROM @HetvegiTanitasiNapokTanevRendjeTable END GO