128 lines
6.5 KiB
Transact-SQL
128 lines
6.5 KiB
Transact-SQL
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
|