IF OBJECT_ID('sp_GetOraSorszamByOsztaly') IS NOT NULL BEGIN DROP PROCEDURE sp_GetOraSorszamByOsztaly END GO CREATE PROCEDURE sp_GetOraSorszamByOsztaly @osztalyCsoportId INT, @datum DATETIME, @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 t.C_ORAKEZDETE <= @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 t.C_ORAKEZDETE <= @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 t.C_ORAKEZDETE <= @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 t.C_ORAKEZDETE <= @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