kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20180618094524_KRETA_5965/sp_GetOraSorszamByOsztaly.sql
2024-03-13 00:33:46 +01:00

102 lines
3.4 KiB
Transact-SQL

IF OBJECT_ID('sp_GetOraSorszamByOsztaly') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetOraSorszamByOsztaly
END
GO
CREATE PROCEDURE sp_GetOraSorszamByOsztaly
@osztalyCsoportId INT,
@datum DATE,
@intezmenyId INT,
@tanevId INT
AS
BEGIN
DECLARE @tanarSzamit bit,
@osztalybontasEgybe bit,
@osztalybontasCsoport bit
SET @tanarSzamit = dbo.fnGetRendszerbeallitasEnumBool(3075, @intezmenyId, @tanevId)
SET @osztalybontasEgybe = dbo.fnGetRendszerbeallitasEnumBool(3078, @intezmenyId, @tanevId)
SET @osztalybontasCsoport = 0
IF EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE (ID = @osztalyCsoportId AND C_OSZTALYBONTASID IS NOT NULL) OR C_OSZTALYBONTASID = @osztalyCsoportId) BEGIN
SET @osztalybontasCsoport = 1
END
IF @osztalybontasEgybe = 0 OR @osztalybontasCsoport = 0 BEGIN
IF @tanarSzamit = 1 BEGIN
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (PARTITION BY t.C_OSZTALYCSOPORTID, t.C_TANARID, t.C_TANTARGYID ORDER BY t.C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND CAST(t.C_ORAKEZDETE AS DATE) <= @datum
AND t.TOROLT = 'F'
AND t.C_INTEZMENYID = @intezmenyid
AND t.C_TANEVID = @tanevId
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
END
ELSE BEGIN
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (PARTITION BY t.C_OSZTALYCSOPORTID, t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
FROM T_TANITASIORA_OSSZES t
WHERE t.C_MEGTARTOTT = 'T'
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_OSZTALYCSOPORTID = @osztalyCsoportId
AND CAST(t.C_ORAKEZDETE AS DATE) <= @datum
AND t.TOROLT = 'F'
AND t.C_INTEZMENYID = @intezmenyid
AND t.C_TANEVID = @tanevId
END
END
ELSE BEGIN
DECLARE @osztalyId int, @csoportId int
IF EXISTS (SELECT 1 FROM T_CSOPORT_OSSZES WHERE ID = @osztalyCsoportId) BEGIN
SET @csoportId = @osztalyCsoportId
SELECT @osztalyId = C_OSZTALYBONTASID FROM T_CSOPORT_OSSZES WHERE ID = @osztalyCsoportId
END
ELSE BEGIN
SET @osztalyId = @osztalyCsoportId
SELECT TOP(1) @csoportId = csoport
FROM (
SELECT
t.C_OSZTALYCSOPORTID as csoport
,COUNT(1) AS cnt
FROM T_TANITASIORA_OSSZES t
WHERE t.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_OSZTALYBONTASID = @osztalyCsoportId)
AND CAST(t.C_ORAKEZDETE AS DATE) <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
AND t.TOROLT = 'F'
AND t.C_INTEZMENYID = @intezmenyid
AND t.C_TANEVID = @tanevId
GROUP BY t.C_OSZTALYCSOPORTID
) x
ORDER BY cnt DESC
END
SELECT TanitasiOraId, OraSorszam
FROM (
SELECT
t.ID AS TanitasiOraId
,ROW_NUMBER() OVER (PARTITION BY t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraSorszam
,t.C_OSZTALYCSOPORTID AS ocsId
FROM T_TANITASIORA_OSSZES t
WHERE t.C_OSZTALYCSOPORTID IN (@osztalyId, @csoportId)
AND CAST(t.C_ORAKEZDETE AS DATE) <= @datum
AND t.C_SORSZAMOZANDO = 'T'
AND t.C_MEGTARTOTT = 'T'
AND t.TOROLT = 'F'
AND t.C_INTEZMENYID = @intezmenyid
AND t.C_TANEVID = @tanevId
) x
WHERE x.ocsId = @osztalyCsoportId
END
END
GO