DROP PROCEDURE IF EXISTS uspTanuloKeresesForSzervezet GO CREATE PROCEDURE [dbo].[uspTanuloKeresesForSzervezet] @pDatum DATETIME = NULL ,@pIntezmenyId INT ,@pTanevId INT ,@pTanuloNeve NVARCHAR(255) = NULL ,@pSzuletesiIdoKezdet DATETIME = NULL ,@pSzuletesiIdoVeg DATETIME = NULL ,@pSzuletesiHely NVARCHAR(50) = NULL ,@pOktatasiAzonosito NVARCHAR(20) = NULL ,@pOsztalyCsoportId INT = NULL ,@pAnyjaNeve NVARCHAR(64) = NULL ,@pSzervezetId INT = NULL ,@pSzervezetNev NVARCHAR(250) = NULL ,@pSzervezetAzonosito NVARCHAR(250) = NULL ,@pSzervezetekHalmaza INT AS BEGIN SET NOCOUNT ON DECLARE @sql nvarchar(max); SET @sql = N' SELECT fh.ID AS TanuloId ,fh.C_NYOMTATASINEV AS TanuloNeve ,fh.C_SZULETESIHELY AS SzuletesiHely ,fh.C_SZULETESIDATUM AS SzuletesiIdo ,tcs.C_OSZTALYCSOPORTID AS OsztalyCsoportId ,sz.C_NEV AS SzervezetNev ,sz.C_AZONOSITO AS SzervezetAzonosito ,IIF(fh.C_NEVSORREND = ''T'', fh.C_UTONEV + '' '' + fh.C_VEZETEKNEV, fh.C_VEZETEKNEV + '' '' + fh.C_UTONEV) AS TanuloNeveElotagNelkul ,fh.c_anyjaneve AS AnyjaNeve ,fh.C_OKTATASIAZONOSITO AS OktatasiAzonosito ,STUFF((SELECT '','' + ocs2.C_NEV FROM T_OSZTALYCSOPORT_OSSZES ocs2 INNER JOIN T_TANULOCSOPORT_OSSZES tcs2 ON tcs2.C_OSZTALYCSOPORTID=ocs2.ID AND tcs.C_TANULOID = tcs2.C_TANULOID AND tcs2.TOROLT = ''F'' INNER JOIN T_CSOPORT_OSSZES cs ON cs.ID = ocs2.ID AND cs.C_SZERVEZETID = tta.C_SZERVEZETID AND cs.TOROLT = ''F'' WHERE ocs2.TOROLT = ''F''' + IIF(@pOsztalyCsoportId IS NOT NULL , N' AND ocs2.ID = @pOsztalyCsoportId ', '') + N' FOR XML PATH(''''), TYPE).value(''.'', ''varchar(max)''),1,1,'''') as Osztaly FROM T_TANULOTANUGYIADATOK_OSSZES tta INNER JOIN ( T_SZERVEZET_OSSZES sz INNER JOIN ( SELECT ID FROM dbo.fnGetLathatoSzervezetek(@pIntezmenyId, @pTanevId, @pSzervezetId, @pSzervezetekHalmaza) ) AS lathato ON lathato.ID = sz.ID ) ON sz.ID = tta.C_SZERVEZETID AND sz.C_TANEVID = tta.C_TANEVID AND sz.TOROLT = ''F'' INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tta.C_TANULOCSOPORTID = tcs.ID AND tcs.C_TANEVID = tta.C_TANEVID AND tcs.TOROLT = ''F'' INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = tcs.C_TANULOID AND fh.C_TANEVID = tcs.C_TANEVID AND fh.TOROLT = ''F'' WHERE tta.C_TANEVID = @pTanevId AND tta.TOROLT = ''F''' + IIF(@pTanuloNeve <> '', ' AND fh.C_NYOMTATASINEV LIKE ''%'' + @pTanuloNeve + ''%'' ', '') + + IIF(@pSzuletesiIdoKezdet IS NOT NULL, ' AND fh.C_SZULETESIDATUM >= @pSzuletesiIdoKezdet ', '') + + IIF(@pSzuletesiIdoVeg IS NOT NULL, ' AND fh.C_SZULETESIDATUM <= @pSzuletesiIdoVeg ', '') + + IIF(@pSzervezetNev <> '', ' AND sz.C_NEV LIKE ''%'' + @pSzervezetNev + ''%'' ', '') + + IIF(@pSzervezetAzonosito <> '', ' AND sz.C_AZONOSITO LIKE ''%'' + @pSzervezetAzonosito + ''%'' ', '') + + IIF(@pAnyjaNeve <> '', ' AND fh.C_ANYJANEVE LIKE ''%'' + @pAnyjaNeve + ''%'' ', '') + + IIF(@pSzuletesiHely <> '', ' AND fh.C_SZULETESIHELY LIKE ''%'' + @pSzuletesiHely + ''%'' ', '') + + IIF(@pOktatasiAzonosito <> '',' AND fh.C_OKTATASIAZONOSITO LIKE ''%'' + @pOktatasiAzonosito + ''%'' ', '') EXEC sp_executesql @sql, N' @pTanevId INT ,@pTanuloNeve NVARCHAR(255) = NULL ,@pSzuletesiIdoKezdet DATETIME = NULL ,@pSzuletesiIdoVeg DATETIME = NULL ,@pSzuletesiHely NVARCHAR(50) = NULL ,@pOktatasiAzonosito NVARCHAR(20) = NULL ,@pOsztalyCsoportId INT = NULL ,@pAnyjaNeve NVARCHAR(64) = NULL ,@pSzervezetId INT = NULL ,@pSzervezetNev NVARCHAR(250) = NULL ,@pSzervezetAzonosito NVARCHAR(250) = NULL ,@pSzervezetekHalmaza INT ,@pIntezmenyId INT' ,@pTanevId = @pTanevId ,@pTanuloNeve = @pTanuloNeve ,@pSzuletesiIdoKezdet = @pSzuletesiIdoKezdet ,@pSzuletesiIdoVeg = @pSzuletesiIdoVeg ,@pSzuletesiHely = @pSzuletesiHely ,@pOktatasiAzonosito = @pOktatasiAzonosito ,@pOsztalyCsoportId = @pOsztalyCsoportId ,@pAnyjaNeve = @pAnyjaNeve ,@pSzervezetId = @pSzervezetId ,@pSzervezetNev = @pSzervezetNev ,@pSzervezetAzonosito = @pSzervezetAzonosito ,@pSzervezetekHalmaza = @pSzervezetekHalmaza ,@pIntezmenyId = @pIntezmenyId END GO