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 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, o.C_TANAROKID, t.C_TANTARGYID ORDER BY t.C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraEvesSorszam FROM T_TANITASIORA_OSSZES t INNER JOIN T_ORAK_TANAROK o ON t.ID = o.C_ORAKID INNER JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyCsoportId) kocs ON kocs.ID = t.C_OSZTALYCSOPORTID WHERE t.C_MEGTARTOTT = 'T' AND t.C_SORSZAMOZANDO = 'T' AND t.C_ORAKEZDETE <= @datum 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 OraEvesSorszam 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 END END ELSE BEGIN IF @tanarSzamit = 1 BEGIN SELECT t.ID AS TanitasiOraId ,ROW_NUMBER() OVER (PARTITION BY o.C_TANAROKID, t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraEvesSorszam FROM T_TANITASIORA_OSSZES t INNER JOIN T_ORAK_TANAROK o ON t.ID = o.C_ORAKID WHERE t.C_OSZTALYCSOPORTID IN ( SELECT cs.ID FROM T_CSOPORT cs WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId) UNION SELECT cs.C_OSZTALYBONTASID FROM T_CSOPORT cs WHERE cs.ID = @osztalyCsoportId UNION SELECT cs.ID FROM T_CSOPORT cs WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId UNION SELECT @osztalyCsoportId ) AND t.C_ORAKEZDETE <= @datum AND t.C_SORSZAMOZANDO = 'T' AND t.C_MEGTARTOTT = 'T' END ELSE BEGIN SELECT t.ID AS TanitasiOraId ,ROW_NUMBER() OVER (PARTITION BY t.C_TANTARGYID ORDER BY C_ORAKEZDETE, C_BEJEGYZESIDEJE) AS OraEvesSorszam FROM T_TANITASIORA_OSSZES t WHERE t.C_OSZTALYCSOPORTID IN ( SELECT cs.ID FROM T_CSOPORT cs WHERE cs.C_OSZTALYBONTASID = (SELECT scs.C_OSZTALYBONTASID FROM T_CSOPORT scs WHERE scs.ID = @osztalyCsoportId) UNION SELECT cs.C_OSZTALYBONTASID FROM T_CSOPORT cs WHERE cs.ID = @osztalyCsoportId UNION SELECT cs.ID FROM T_CSOPORT cs WHERE cs.C_OSZTALYBONTASID = @osztalyCsoportId UNION SELECT @osztalyCsoportId ) AND t.C_ORAKEZDETE <= @datum AND t.C_SORSZAMOZANDO = 'T' AND t.C_MEGTARTOTT = 'T' END END END GO