kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Functions/fnGetOsztalyCsoportokUtolsoTanitasiNap.sql
2024-03-13 00:33:46 +01:00

37 lines
1.6 KiB
Transact-SQL

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