DROP FUNCTION IF EXISTS fnGetOsztalyCsoportokUtolsoTanitasiNap GO CREATE FUNCTION fnGetOsztalyCsoportokUtolsoTanitasiNap (@pTanevId int ,@pOsztalyCsoportId int = NULL ) returns @ResultTable TABLE (OsztalycsoportId int, UtolsoTanitasiNap Datetime, VegzosEvfolyam CHAR(1)) AS BEGIN DECLARE @VegzosUtolsoTanitasiNap datetime; SELECT @VegzosUtolsoTanitasiNap = MIN(C_DATUM) FROM T_TANEVRENDJE_OSSZES WHERE TOROLT = 'F' AND C_TANEVID = @pTanevId AND C_NAPTIPUSA IN (1402, 7600, 7601, 7602, 7603, 1395) AND C_OSSZESCSOPORTRAVONATKOZIK = 'T' INSERT INTO @ResultTable (OsztalycsoportId, UtolsoTanitasiNap, VegzosEvfolyam) SELECT ocs.ID AS OsztalycsoportId ,IIF(C_VEGZOSEVFOLYAM = 'T', IIF(x.C_OSZTALYCSOPORTID IS NOT NULL, NewVegeDatum, @VegzosUtolsoTanitasiNap), t.C_UTOLSONAP) AS UtolsoTanitasiNap ,C_VEGZOSEVFOLYAM AS VegzosEvfolyam FROM T_OSZTALYCSOPORT_OSSZES ocs INNER JOIN T_TANEV_OSSZES t ON t.ID = @pTanevId AND t.ID = ocs.C_TANEVID AND t.TOROLT = 'F' LEFT JOIN ( SELECT MIN(tr.C_DATUM) AS NewVegeDatum, ocstr.C_OSZTALYCSOPORTID FROM T_TANEVRENDJE_OSSZES tr INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON ocstr.C_TANEVRENDJEID = tr.ID WHERE tr.C_OSSZESCSOPORTRAVONATKOZIK = 'F' AND tr.TOROLT = 'F' AND tr.C_NAPTIPUSA IN (1402, 7600, 7601, 7602, 7603) AND tr.C_TANEVID = @pTanevId GROUP BY ocstr.C_OSZTALYCSOPORTID ) x ON x.C_OSZTALYCSOPORTID = ocs.Id WHERE (@pOsztalyCsoportId IS NULL OR @pOsztalyCsoportId = ocs.ID) AND ocs.TOROLT = 'F' RETURN END GO