DROP PROCEDURE IF EXISTS uspGetSzervezetData GO CREATE PROCEDURE uspGetSzervezetData @pIntezmenyId int ,@pTanevId int ,@pSzervezetId int = NULL ,@pAdatokHalmaza int = 1 -- 0: megadott szervezet és alszervezetei, 1: megadott szervezet (SzervezetId = NULL esetén az ősszes székhely), 2: megadott szervezet alszervezetei ,@pNev nvarchar(255) = NULL ,@pAzonosito nvarchar(255) = NULL ,@pSzervezetCime nvarchar(255) = NULL ,@pTanulokSzamaTol int = NULL ,@pTanulokSzamaIg int = NULL ,@pOktatokSzamaTol int = NULL ,@pOktatokSzamaIg int = NULL ,@pCsoportokSzamaTol int = NULL ,@pCsoportokSzamaIg int = NULL ,@pTantargyakSzamaTol int = NULL ,@pTantargyakSzamaIg int = NULL ,@pHelyszinSzamaTol int = NULL ,@pHelyszinSzamaIg int = NULL AS BEGIN SET NOCOUNT ON; DECLARE @sql nvarchar(max) = N'' SET @sql = N' CREATE TABLE #LathatoSzervezetek (ID int) INSERT INTO #LathatoSzervezetek (ID) SELECT lsz.ID FROM fnGetLathatoSzervezetek(@pIntezmenyId, @pTanevId, @pSzervezetId, @pAdatokHalmaza) lsz ' SET @sql += N' SELECT * FROM ( SELECT sz.ID AS SzervezetId ,sz.C_TIPUS AS SzervezetTipus ,sz.C_NEV AS SzervezetNev ,sz.C_AZONOSITO AS SzervezetAzonosito ,sz.C_SZERVEZETCIM AS SzervezetCim ,sz.C_DUALISHELYSZINTIPUSID AS HelyszinTipusId ,COUNT(DISTINCT cs.ID) AS CsoportokSzama ,COUNT(DISTINCT ma.ID) AS OktatokSzama ,COUNT(DISTINCT tta.ID) AS TanulokSzama ,COUNT(DISTINCT tt.ID) AS TantargyakSzama ,COUNT(DISTINCT t.ID) AS HelyszinekSzama ,sz.CREATOR AS RogzitoId ,sz.C_PARENTSZERVEZETID AS ParentSzervezetId ,psz.C_NEV AS ParentSzervezetNev FROM T_SZERVEZET_OSSZES sz INNER JOIN #LathatoSzervezetek lsz ON lsz.ID = sz.ID LEFT JOIN T_CSOPORT_OSSZES cs ON cs.C_SZERVEZETID = sz.ID AND cs.C_ALTANEVID = sz.C_TANEVID AND cs.TOROLT = ''F'' LEFT JOIN T_MUNKAUGYIADATOK_OSSZES ma ON ma.C_SZERVEZETID = sz.ID AND ma.C_TANEVID = sz.C_TANEVID AND ma.TOROLT = ''F'' LEFT JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.C_SZERVEZETID = sz.ID AND tta.C_TANEVID = sz.C_TANEVID AND tta.TOROLT = ''F'' LEFT JOIN T_TANTARGY_OSSZES tt ON tt.C_SZERVEZETID = sz.ID AND tt.C_TANEVID = sz.C_TANEVID AND tt.TOROLT = ''F'' LEFT JOIN T_TEREM_OSSZES t ON t.C_SZERVEZETID = sz.ID AND t.C_TANEVID = sz.C_TANEVID AND t.TOROLT = ''F'' LEFT JOIN T_SZERVEZET_OSSZES psz ON psz.ID = sz.C_PARENTSZERVEZETID AND psz.C_TANEVID = sz.C_TANEVID AND psz.TOROLT = ''F'' WHERE sz.C_TANEVID = @pTanevId AND sz.TOROLT = ''F'' GROUP BY sz.ID, sz.C_NEV, sz.C_SZERVEZETCIM, sz.C_AZONOSITO, sz.C_TIPUS, sz.C_DUALISHELYSZINTIPUSID, sz.CREATOR, sz.C_PARENTSZERVEZETID, psz.C_NEV ) x WHERE 1 = 1 ' SET @sql = CONCAT( @sql ,IIF(@pNev > N'', N' AND SzervezetNev LIKE N''%'' + @pNev + N''%''', N'') ,IIF(@pAzonosito > N'', N' AND SzervezetAzonosito LIKE N''%'' + @pAzonosito + N''%''', N'') ,IIF(@pSzervezetCime > N'', N' AND SzervezetCim LIKE N''%'' + @pSzervezetCime + N''%''', N'') ,IIF(@pTanulokSzamaTol IS NOT NULL, N' AND TanulokSzama >=' + CAST(@pTanulokSzamaTol AS char(10)) + ' ', N'') ,IIF(@pTanulokSzamaIg IS NOT NULL, N' AND TanulokSzama <=' + CAST(@pTanulokSzamaIg AS char(10)) + ' ', N'') ,IIF(@pOktatokSzamaTol IS NOT NULL, N' AND OktatokSzama >=' + CAST(@pOktatokSzamaTol AS char(10)) + ' ', N'') ,IIF(@pOktatokSzamaIg IS NOT NULL, N' AND OktatokSzama <=' + CAST(@pOktatokSzamaIg AS char(10)) + ' ', N'') ,IIF(@pCsoportokSzamaTol IS NOT NULL, N' AND CsoportokSzama >=' + CAST(@pCsoportokSzamaTol AS char(10)) + ' ', N'') ,IIF(@pCsoportokSzamaIg IS NOT NULL, N' AND CsoportokSzama <=' + CAST(@pCsoportokSzamaIg AS char(10)) + ' ', N'') ,IIF(@pTantargyakSzamaTol IS NOT NULL, N' AND TantargyakSzama >=' + CAST(@pTantargyakSzamaTol AS char(10)) + ' ', N'') ,IIF(@pTantargyakSzamaIg IS NOT NULL, N' AND TantargyakSzama <=' + CAST(@pTantargyakSzamaIg AS char(10)) + ' ', N'') ,IIF(@pHelyszinSzamaTol IS NOT NULL, N' AND HelyszinSzama >=' + CAST(@pHelyszinSzamaTol AS char(10)) + ' ', N'') ,IIF(@pHelyszinSzamaIg IS NOT NULL, N' AND HelyszinSzama <=' + CAST(@pHelyszinSzamaIg AS char(10)) + ' ', N'') ) EXECUTE sp_executesql @sql, N' @pIntezmenyId int ,@pTanevId int ,@pSzervezetId int ,@pAdatokHalmaza int ,@pNev nvarchar(255) ,@pAzonosito nvarchar(255) ,@pSzervezetCime nvarchar(255)' ,@pIntezmenyId = @pIntezmenyId ,@pTanevId = @pTanevId ,@pSzervezetId = @pSzervezetId ,@pAdatokHalmaza = @pAdatokHalmaza ,@pNev = @pNev ,@pAzonosito = @pAzonosito ,@pSzervezetCime = @pSzervezetCime END GO