DROP FUNCTION IF EXISTS fnGetElsoUtolsoTanitasiNapFelevVege GO CREATE FUNCTION fnGetElsoUtolsoTanitasiNapFelevVege(@tanevId INT, @osztalyCsoportId INT) RETURNS @result TABLE ( ElsoTanitasiNap datetime ,UtolsoTanitasiNap datetime ,FelevVege datetime ) AS BEGIN DECLARE @isVegzos char(1) = (SELECT C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId) DECLARE @isKeresztfeleves char(1) = (SELECT C_KERESZTFELEVES FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyCsoportId) DECLARE @utolsoNapForMindenVegzos datetime = ( SELECT TOP 1 C_DATUM FROM ( SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_OSSZESCSOPORTRAVONATKOZIK = 'T' AND C_NAPTIPUSA IN (1402, 7600, 7601, 7603) AND C_TANEVID = @tanevId AND TOROLT = 'F') o ORDER BY C_DATUM) DECLARE @utolsoNapForMindenNemVegzos datetime = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_OSSZESCSOPORTRAVONATKOZIK = 'T' AND C_NAPTIPUSA = 1395 AND C_TANEVID = @tanevId AND TOROLT = 'F') DECLARE @utolsoNapForOsztalyVegzos datetime = ( SELECT TOP 1 C_DATUM FROM ( SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES tr INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID WHERE C_NAPTIPUSA IN (1402, 7600, 7601, 7603) AND C_OSZTALYCSOPORTID = @osztalyCsoportId AND tr.C_TANEVID = @tanevId AND tr.TOROLT = 'F') o ORDER BY C_DATUM) DECLARE @utolsoNapForOsztalyNemVegzos datetime = ( SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES tr INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID WHERE C_NAPTIPUSA = 1395 AND C_OSZTALYCSOPORTID = @osztalyCsoportId AND tr.TOROLT = 'F') DECLARE @utolsoNapForMindenKeresztfelevesVegzos datetime = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_OSSZESCSOPORTRAVONATKOZIK = 'T' AND C_NAPTIPUSA = 7602 AND C_TANEVID = @tanevId AND TOROLT = 'F') DECLARE @utolsoNapForMindenKeresztfelevesNemVegzos datetime = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_OSSZESCSOPORTRAVONATKOZIK = 'T' AND C_NAPTIPUSA = 1400 AND C_TANEVID = @tanevId AND TOROLT = 'F') DECLARE @utolsoNapForOsztalyKeresztfelevesVegzos datetime = ( SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES tr INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID WHERE C_NAPTIPUSA = 7602 AND C_OSZTALYCSOPORTID = @osztalyCsoportId AND tr.TOROLT = 'F') DECLARE @utolsoNapForOsztalyKeresztfelevesNemVegzos datetime = ( SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES tr INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID WHERE C_NAPTIPUSA = 1400 AND C_OSZTALYCSOPORTID = @osztalyCsoportId AND tr.TOROLT = 'F') DECLARE @utolsoTanitasiNapTanev datetime = (SELECT TOP 1 C_UTOLSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @tanevId AND TOROLT = 'F') DECLARE @utolsoNap datetime IF (@isKeresztfeleves = 'T') BEGIN IF (@isVegzos = 'T') BEGIN SET @utolsoNap = (SELECT COALESCE(@utolsoNapForOsztalyKeresztfelevesVegzos, @utolsoNapForMindenKeresztfelevesVegzos, @utolsoNapForOsztalyVegzos, @utolsoNapForMindenVegzos, @utolsoTanitasiNapTanev)) END ELSE BEGIN SET @utolsoNap = (SELECT COALESCE(@utolsoNapForOsztalyKeresztfelevesNemVegzos, @utolsoNapForMindenKeresztfelevesNemVegzos, @utolsoNapForOsztalyNemVegzos, @utolsoNapForMindenNemVegzos, @utolsoTanitasiNapTanev)) END END ELSE BEGIN IF (@isVegzos = 'T') BEGIN SET @utolsoNap = (SELECT COALESCE(@utolsoNapForOsztalyVegzos, @utolsoNapForMindenVegzos, @utolsoTanitasiNapTanev)) END ELSE BEGIN SET @utolsoNap = (SELECT COALESCE(@utolsoNapForOsztalyNemVegzos, @utolsoNapForMindenNemVegzos, @utolsoTanitasiNapTanev)) END END DECLARE @elsoNapForMinden datetime = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_OSSZESCSOPORTRAVONATKOZIK = 'T' AND C_NAPTIPUSA = 1394 AND C_TANEVID = @tanevId AND TOROLT = 'F') DECLARE @elsoNapForOsztaly datetime = ( SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES tr INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID WHERE C_NAPTIPUSA = 1394 AND C_OSZTALYCSOPORTID = @osztalyCsoportId AND tr.TOROLT = 'F') DECLARE @elsoNapForMindenKeresztfeleves datetime = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_OSSZESCSOPORTRAVONATKOZIK = 'T' AND C_NAPTIPUSA = 7604 AND C_TANEVID = @tanevId AND TOROLT = 'F') DECLARE @elsoNapForOsztalyKeresztfeleves datetime = ( SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES tr INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID WHERE C_NAPTIPUSA = 7604 AND C_OSZTALYCSOPORTID = @osztalyCsoportId AND tr.TOROLT = 'F') DECLARE @elsoTanitasiNapTanev datetime = (SELECT TOP 1 C_ELSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @tanevId AND TOROLT = 'F') DECLARE @elsoNap datetime IF (@isKeresztfeleves = 'T') BEGIN SET @elsoNap = (SELECT COALESCE(@elsoNapForOsztalyKeresztfeleves, @elsoNapForMindenKeresztfeleves, @elsoNapForOsztaly, @elsoNapForMinden, @elsoTanitasiNapTanev)) END ELSE BEGIN SET @elsoNap = (SELECT COALESCE(@elsoNapForOsztaly, @elsoNapForMinden, @elsoTanitasiNapTanev)) END DECLARE @felevVegeForMinden datetime = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_OSSZESCSOPORTRAVONATKOZIK = 'T' AND C_NAPTIPUSA = 1400 AND C_TANEVID = @tanevId AND TOROLT = 'F') DECLARE @felevVegeForOsztaly datetime = ( SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES tr INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID WHERE C_NAPTIPUSA = 1400 AND C_OSZTALYCSOPORTID = @osztalyCsoportId AND tr.TOROLT = 'F') DECLARE @felevVegeForMindenKeresztfeleves datetime = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_OSSZESCSOPORTRAVONATKOZIK = 'T' AND C_NAPTIPUSA = 7605 AND C_TANEVID = @tanevId AND TOROLT = 'F') DECLARE @felevVegeForOsztalyKeresztfeleves datetime = ( SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES tr INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID WHERE C_NAPTIPUSA = 7605 AND C_OSZTALYCSOPORTID = @osztalyCsoportId AND tr.TOROLT = 'F') DECLARE @felevVege datetime IF (@isKeresztfeleves = 'T') BEGIN SET @felevVege = (SELECT COALESCE(@felevVegeForOsztalyKeresztfeleves, @felevVegeForMindenKeresztfeleves, @felevVegeForOsztaly, @felevVegeForMinden)) END ELSE BEGIN SET @felevVege = (SELECT COALESCE(@felevVegeForOsztaly, @felevVegeForMinden)) END INSERT INTO @result SELECT @elsoNap, @utolsoNap, @felevVege RETURN END GO