DROP PROCEDURE IF EXISTS uspGetKozossegiSzolgalatokData GO CREATE PROCEDURE uspGetKozossegiSzolgalatokData @pIntezmenyId int ,@pOsztalyCsoportIdList nvarchar(max) ,@pIdoszakKezdete datetime ,@pIdoszakVege datetime ,@pOsszesOraszamKezdete int ,@pOsszesOraszamVege int ,@pTanuloNeve nvarchar(250) ,@pAnyjaNeve nvarchar(250) AS BEGIN SET NOCOUNT ON; DECLARE @sql nvarchar(max) SET @sql = N' SELECT * FROM ( SELECT currenttanulo.TanuloId as ID ,currenttanulo.TanuloId as TanuloId ,currenttanulo.TanuloNev as TanuloNev ,IIF(currenttanulo.Nevsorrend = ''T'' ,currenttanulo.TanuloUtonev + '' '' + currenttanulo.TanuloVezeteknev ,currenttanulo.TanuloVezeteknev + '' '' + currenttanulo.TanuloUtonev) as TanuloNevElotagNelkul ,currenttanulo.AnyjaNeve as AnyjaNeve ,currenttanulo.SzuletesiIdo as SzuletesiIdo ,currenttanulo.OsztalyNev as OsztalyNev ,ISNULL(SUM(kozossegiszolgalat.C_ORASZAM),0) as OsszesOraszam ,tanulo.C_OKTATASIAZONOSITO as OktatasiAzonosito FROM T_FELHASZNALO_OSSZES tanulo LEFT JOIN ( SELECT DISTINCT tanulo.C_OKTATASIAZONOSITO as OktatasiAzonosito ,tanulo.ID as TanuloId ,tanulo.C_NYOMTATASINEV as TanuloNev ,tanulo.C_NEVSORREND as Nevsorrend ,tanulo.C_VEZETEKNEV as TanuloVezeteknev ,tanulo.C_UTONEV as TanuloUtonev ,tanulo.C_ANYJANEVE as AnyjaNeve ,tanulo.C_SZULETESIDATUM as SzuletesiIdo ,osztalycsoport.C_NEV as OsztalyNev FROM T_FELHASZNALO_OSSZES tanulo LEFT JOIN T_TANULOCSOPORT_OSSZES tanulocsoport ON tanulocsoport.C_TANULOID = tanulo.ID AND tanulocsoport.TOROLT = ''F'' LEFT JOIN T_OSZTALYCSOPORT_OSSZES osztalycsoport ON osztalycsoport.ID = tanulocsoport.C_OSZTALYCSOPORTID AND osztalycsoport.TOROLT = ''F'' WHERE tanulo.TOROLT = ''F'' ' + IIF(@pOsztalyCsoportIdList IS NOT NULL, 'AND osztalycsoport.ID IN (' + @pOsztalyCsoportIdList + ')', '') + N' ) currenttanulo ON currenttanulo.OktatasiAzonosito IS NOT NULL ' + IIF(@pTanuloNeve IS NOT NULL, 'AND currenttanulo.TanuloNev LIKE (''%''+ @pTanuloNeve +''%'')', '') + N' ' + IIF(@pAnyjaNeve IS NOT NULL, 'AND currenttanulo.AnyjaNeve LIKE (''%''+ @pAnyjaNeve +''%'')', '') + N' LEFT JOIN T_TANULOKOZOSSEGISZOLGALAT_OSSZES kozossegiszolgalat ON kozossegiszolgalat.C_TANULOID = Tanulo.ID AND kozossegiszolgalat.C_INTEZMENYID = @pIntezmenyId ' + IIF(@pIdoszakKezdete IS NOT NULL, 'AND kozossegiszolgalat.C_INTERVALLUMKEZDETE >= @pIdoszakKezdete', '') + N' ' + IIF(@pIdoszakVege IS NOT NULL, 'AND kozossegiszolgalat.C_INTERVALLUMVEGE <= @pIdoszakVege', '') + N' AND kozossegiszolgalat.TOROLT = ''F'' WHERE tanulo.C_OKTATASIAZONOSITO = currenttanulo.OktatasiAzonosito AND tanulo.C_INTEZMENYID = @pIntezmenyId AND tanulo.TOROLT = ''F'' GROUP BY currenttanulo.TanuloId, currenttanulo.TanuloNev, currenttanulo.Nevsorrend, currenttanulo.TanuloVezeteknev, currenttanulo.TanuloUtonev, currenttanulo.AnyjaNeve, currenttanulo.SzuletesiIdo, currenttanulo.OsztalyNev, tanulo.C_OKTATASIAZONOSITO ) result WHERE 1 = 1 ' + IIF(@pOsszesOraszamKezdete IS NOT NULL, 'AND @pOsszesOraszamKezdete >= result.OsszesOraszam', '') + N' ' + IIF(@pOsszesOraszamVege IS NOT NULL, 'AND @pOsszesOraszamVege <= result.OsszesOraszam', '') + N' ORDER BY result.TanuloNevElotagNelkul ASC' EXEC sp_executesql @sql, N' @pIntezmenyId int ,@pOsztalyCsoportIdList nvarchar(max) ,@pIdoszakKezdete datetime ,@pIdoszakVege datetime ,@pOsszesOraszamKezdete int ,@pOsszesOraszamVege int ,@pTanuloNeve nvarchar(250) ,@pAnyjaNeve nvarchar(250)' ,@pIntezmenyId = @pIntezmenyId ,@pOsztalyCsoportIdList = @pOsztalyCsoportIdList ,@pIdoszakKezdete = @pIdoszakKezdete ,@pIdoszakVege = @pIdoszakVege ,@pOsszesOraszamKezdete = @pOsszesOraszamKezdete ,@pOsszesOraszamVege = @pOsszesOraszamVege ,@pTanuloNeve = @pTanuloNeve ,@pAnyjaNeve = @pAnyjaNeve END GO