DROP PROCEDURE IF EXISTS uspGetKapcsolodoOsztalycsoportokByTanar GO CREATE PROCEDURE uspGetKapcsolodoOsztalycsoportokByTanar @pTanarId int ,@pMuveszetiAg int = NULL ,@pTipusId int ,@pTanevId int ,@pOsztalyKell bit = 1 ,@pCsoportKell bit = 0 ,@pTartottOraKell bit = 1 ,@pOsztalyGroupName nvarchar(100) = NULL ,@pCsoportGroupName nvarchar(100) = NULL AS BEGIN SET NOCOUNT ON; DECLARE @feladatKategoriaId int = 7555 ,@defaultEvfolyamId int CREATE TABLE #kapcsolodoOsztalyCsoportok (ID int) SELECT @defaultEvfolyamId = (SELECT TOP 1 ID FROM T_DICTIONARYITEMBASE_OSSZES WHERE C_DICTIONARYTYPEID = @pTipusId AND C_VALUE = 1 AND TOROLT = 'F') INSERT INTO #kapcsolodoOsztalyCsoportok (ID) EXEC uspGetDokumentumTanarKapcsolodoOsztalyai @pTanarId = @pTanarId ,@pTanevId = @pTanevId ,@pOsztalyKell = @pOsztalyKell ,@pCsoportKell = @pCsoportKell ,@pTartottOraKell = @pTartottOraKell ,@pFeladatKategoriaId = @feladatKategoriaId SELECT DISTINCT CASE WHEN ocs.C_NEV NOT LIKE '%[^0-9]%' THEN CAST(LEFT(ocs.C_NEV, 9) AS int) ELSE 2147483647 END AS NumberOrder ,CASE WHEN LEFT(ocs.C_NEV, 1) BETWEEN '0' AND '9' AND ocs.C_NEV LIKE '%[^0-9]%' THEN CAST(LEFT(SUBSTRING(ocs.C_NEV, 1, PATINDEX('%[^0-9]%', ocs.C_NEV) - 1),9) AS int) ELSE 2147483647 END AS NumberAndTextOrder ,ocs.ID AS ID ,ocs.C_NEV AS Nev ,ocs.C_EVFOLYAMTIPUSA AS Evfolyam ,CASE WHEN @pOsztalyGroupName IS NOT NULL AND @pCsoportGroupName IS NOT NULL THEN CASE WHEN o.ID IS NOT NULL THEN @pOsztalyGroupName ELSE @pCsoportGroupName END ELSE dib2.C_NAME END AS GroupName FROM T_OSZTALYCSOPORT_OSSZES ocs INNER JOIN #kapcsolodoOsztalyCsoportok kocs ON kocs.ID = ocs.ID INNER JOIN T_DICTIONARYITEMBASE_OSSZES dib ON dib.ID = ISNULL(ocs.C_EVFOLYAMTIPUSA, @defaultEvfolyamId) AND dib.TOROLT = 'F' AND dib.C_TANEVID = ocs.C_TANEVID LEFT JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F' AND o.C_ALTANEVID = ocs.C_TANEVID INNER JOIN T_DICTIONARYITEMBASE_OSSZES dib2 ON dib2.ID = ocs.C_MUVESZETIAGID AND dib2.C_TANEVID = ocs.C_TANEVID AND dib2.TOROLT='F' WHERE ocs.TOROLT = 'F' AND ocs.C_TANEVID = @pTanevId AND ocs.C_FELADATKATEGORIAID = @feladatKategoriaId AND (@pMuveszetiAg IS NULL OR ocs.C_MUVESZETIAGID = @pMuveszetiAg) ORDER BY GroupName DESC ,NumberOrder ASC ,NumberAndTextOrder ASC ,Nev ASC END GO