DROP PROCEDURE IF EXISTS uspCsoportKereses GO CREATE PROCEDURE uspCsoportKereses @pTanevId INT = null ,@pSearchDate DATETIME = null ,@pCsoportNev NVARCHAR(512) = null ,@pNaEvfolyamTipusa BIT = null ,@pEvfolyamID INT = null ,@pCsopvezID INT = null ,@pTeremID INT = null ,@pVegzosSearch INT = null ,@pCsopTipID INT = null ,@pOsztalyID INT = null ,@pNaploNyit DATETIME = null ,@pNaploZar DATETIME = null ,@pFeladatEllatasiHelyID INT = null ,@pFeladatKategoriaId INT = null ,@pMuveszetiAgId INT = null ,@pUresCsoport BIT = 0 AS SET NOCOUNT ON; SELECT T_CSOPORT_OSSZES.ID ,T_TANEV_OSSZES.C_NEV AS TanevNev ,T_TANEV_OSSZES.ID AS TanevId ,T_OSZTALYCSOPORT_OSSZES.C_NEV AS CsoportNev ,fh.C_NYOMTATASINEV AS CsoportvezetoNev ,ISNULL(T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA, osztalyBontasNev.C_EVFOLYAMTIPUSA) AS EvfolyamTipusaId ,T_TEREM_OSSZES.c_nev AS TeremNev ,T_OSZTALYCSOPORT_OSSZES.C_VEGZOSEVFOLYAM AS Vegzos ,T_CSOPORT_OSSZES.C_TIPUSA AS CsopTip ,CONCAT(ISNULL(TANULOK.SZAM,0), ' (', ISNULL(tcsArchiv.ArchivTanulokSzama, 0), ')') AS TanulokSzama ,ISNULL(TANULOK.SZAM, 0) * 1000 + ISNULL(tcsArchiv.ArchivTanulokSzama, 0) AS TanulokSzamaOrder ,ISNULL(TANULOK.SZAM,0) AS AktualisTanulokSzama ,T_DICTIONARYITEMBASE_OSSZES.C_VALUE AS EvfolyamSorszama ,osztalyBontasNev.C_NEV AS OsztalyBontasNev ,T_OSZTALYCSOPORT_OSSZES.C_MUVESZETIAGID AS MuveszetiAgId FROM T_CSOPORT_OSSZES WITH(NOLOCK) INNER JOIN T_OSZTALYCSOPORT_OSSZES WITH(NOLOCK) ON T_OSZTALYCSOPORT_OSSZES.ID = T_CSOPORT_OSSZES.ID AND T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F' LEFT JOIN T_OSZTALYCSOPORT_OSSZES osztalyBontasNev WITH(NOLOCK) ON osztalyBontasNev.ID = T_CSOPORT_OSSZES.C_OSZTALYBONTASID AND osztalyBontasNev.TOROLT = 'F' LEFT JOIN T_TANEV_OSSZES ON T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID AND T_TANEV_OSSZES.TOROLT = 'F' LEFT JOIN T_TEREM_OSSZES ON T_TEREM_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TEREMID AND T_TEREM_OSSZES.TOROLT = 'F' LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ON T_DICTIONARYITEMBASE_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA AND T_DICTIONARYITEMBASE_OSSZES.C_INTEZMENYID = T_OSZTALYCSOPORT_OSSZES.C_INTEZMENYID AND T_DICTIONARYITEMBASE_OSSZES.C_TANEVID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID AND T_DICTIONARYITEMBASE_OSSZES.TOROLT = 'F' LEFT JOIN ( SELECT C_OSZTALYCSOPORTID ,COUNT(DISTINCT C_TANULOID) AS SZAM FROM T_TANULOCSOPORT_OSSZES WITH(NOLOCK) INNER JOIN T_TANEV_OSSZES tanev ON tanev.ID = T_TANULOCSOPORT_OSSZES.C_TANEVID AND tanev.C_INTEZMENYID = T_TANULOCSOPORT_OSSZES.C_INTEZMENYID WHERE T_TANULOCSOPORT_OSSZES.TOROLT = 'F' AND ( ( IIF( @pSearchDate > tanev.C_UTOLSONAP ,tanev.C_UTOLSONAP,@pSearchDate) BETWEEN T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM AND ISNULL(T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM, tanev.C_UTOLSONAP) AND tanev.C_AKTIV = 'T' ) OR tanev.C_AKTIV = 'F' ) GROUP BY C_OSZTALYCSOPORTID ) TANULOK ON TANULOK.C_OSZTALYCSOPORTID = T_CSOPORT_OSSZES.ID LEFT JOIN ( SELECT COUNT(DISTINCT C_TANULOID) AS ArchivTanulokSzama ,C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES tcs WITH(NOLOCK) WHERE tcs.TOROLT = 'F' GROUP BY C_OSZTALYCSOPORTID ) tcsArchiv ON tcsArchiv.C_OSZTALYCSOPORTID = T_CSOPORT_OSSZES.ID LEFT JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = T_CSOPORT_OSSZES.C_CSOPORTVEZETOID AND fh.TOROLT ='F' AND fh.C_TANEVID = T_CSOPORT_OSSZES.C_ALTANEVID WHERE T_CSOPORT_OSSZES.TOROLT = 'F' AND T_CSOPORT_OSSZES.C_ALTANEVID = @pTanevId AND (@pCsoportNev IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_NEV LIKE '%' + @pCsoportNev + '%') AND (@pNaEvfolyamTipusa IS NULL OR ((T_CSOPORT_OSSZES.C_OSZTALYBONTASID IS NULL AND (T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA = @pEvfolyamID or T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA IS NULL)) OR (osztalyBontasNev.ID IS NOT NULL AND (osztalyBontasNev.C_EVFOLYAMTIPUSA = @pEvfolyamID or osztalyBontasNev.C_EVFOLYAMTIPUSA IS NULL)))) AND (@pEvfolyamID IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA = @pEvfolyamID) AND (@pCsopvezID IS NULL OR T_CSOPORT_OSSZES.C_CSOPORTVEZETOID = @pCsopvezID) AND (@pTeremID IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_TEREMID = @pTeremID) AND (@pCsopTipID IS NULL OR T_CSOPORT_OSSZES.C_TIPUSA = @pCsopTipID) AND (@pOsztalyID IS NULL OR T_CSOPORT_OSSZES.C_OSZTALYBONTASID = @pOsztalyID) AND (@pNaploNyit IS NULL OR T_CSOPORT_OSSZES.C_CSOPORTNAPLOMEGNYITASA >= @pNaploNyit) AND (@pNaploZar IS NULL OR T_CSOPORT_OSSZES.C_CSOPORTNAPLOZARASA <= @pNaploZar) AND (@pFeladatEllatasiHelyID IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyID) AND (@pFeladatKategoriaId IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @pFeladatKategoriaId) AND (@pMuveszetiAgId IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_MUVESZETIAGID = @pMuveszetiAgId) AND (@pUresCsoport = 0 OR ISNULL(TANULOK.SZAM, 0) = 0) AND (@pVegzosSearch IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_VEGZOSEVFOLYAM = CASE WHEN @pVegzosSearch = 1 THEN 'T' ELSE 'F' END) AND T_CSOPORT_OSSZES.C_SZERVEZETID IS NULL OPTION(RECOMPILE) GO