SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF OBJECT_ID('dbo.uspIktatottDokumentumLetezik') IS NOT NULL BEGIN DROP PROCEDURE dbo.uspIktatottDokumentumLetezik END GO CREATE PROCEDURE dbo.uspIktatottDokumentumLetezik @intezmenyId INT, @tanevId INT, @dokumentumKategoria INT, @dokumentumTipus INT, @elemiSzint INT, @osztalyId INT = NULL, @csoportId INT = NULL, @tanarId INT = NULL, @evfolyamId INT = NULL, @gondviseloNeve NVARCHAR(50) = NULL, @tanuloNeve NVARCHAR(50) = NULL, @tanuloEgyediAzon NVARCHAR(15) = NULL, @alkalmazottEgyediAzon NVARCHAR(15) = NULL AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; declare @cnt int = 0 set @cnt = case when @osztalyId IS NOT NULL then 1 else 0 END+ case when @csoportId IS NOT NULL then 1 else 0 END+ case when @tanarId IS NOT NULL then 1 else 0 END+ case when @evfolyamId IS NOT NULL then 1 else 0 END+ case when @gondviseloNeve IS NOT NULL then 1 else 0 END+ case when @tanuloNeve IS NOT NULL then 1 else 0 END+ case when @tanuloEgyediAzon IS NOT NULL then 1 else 0 END+ case when @alkalmazottEgyediAzon IS NOT NULL then 1 else 0 END DECLARE @whereCondition NVARCHAR(MAX) = '' declare @sql NVARCHAR(MAX) = CONCAT(N'SELECT ID FROM ( SELECT kulcsszotipusok.iktdID ID, COUNT(kulcsszotipusok.darab) AS darab FROM ( SELECT iktd.ID iktdID, ', IIF(@cnt > 0, 'dksz.C_DOKUMENTUMKULCSSZOTIPUS, ', ''), N'COUNT(iktd.C_INTEZMENYID) AS darab FROM T_IKTATOTTDOKUMENTUM iktd', IIF(@cnt > 0, N' LEFT JOIN T_DOKUMENTUMKULCSSZO_OSSZES dksz ON dksz.C_IKTATOTTDOKUMENTUMID = iktd.ID LEFT JOIN T_DOKUMENTUMKULCSSZOERTEK_OSSZES dksze ON dksze.ID = dksz.C_DOKUMENTUMKULCSSZOERTEKID', ''), N' WHERE iktd.TOROLT = ''F'' AND iktd.C_INTEZMENYID = ', @intezmenyId, N' AND iktd.C_TANEVID = ', @tanevId, N' AND iktd.C_DOKUMENTUMKATEGORIA = ', @dokumentumKategoria, N' AND iktd.C_DOKUMENTUMTIPUS = ', @dokumentumTipus, N' AND iktd.C_DOKUMENTUMELEMISZINT = ', @elemiSzint ) IF @cnt > 0 BEGIN IF @osztalyId IS NOT NULL BEGIN SET @whereCondition += CONCAT(IIF(@whereCondition='', N' AND (',''), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7399 AND dksze.C_ERTEK = ''', @osztalyId, ''')') END IF @csoportId IS NOT NULL BEGIN SET @whereCondition += CONCAT(IIF(@whereCondition='', N' AND (', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7410 AND dksze.C_ERTEK = ''', @csoportId, ''')') END IF @tanarId IS NOT NULL BEGIN SET @whereCondition += CONCAT(IIF(@whereCondition='', N' AND (', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7415 AND dksze.C_ERTEK = ''', @tanarId, ''')') END IF @evfolyamId IS NOT NULL BEGIN SET @whereCondition += CONCAT(IIF(@whereCondition='', N' AND (', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7400 AND dksze.C_ERTEK = ''', @evfolyamId, ''')') END IF @tanuloNeve IS NOT NULL BEGIN SET @whereCondition += CONCAT(IIF(@whereCondition='', N' AND (', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7414 AND LOWER(dksze.C_ERTEK) LIKE ''%', LOWER(@tanuloNeve), '%'')') END IF @gondviseloNeve IS NOT NULL BEGIN SET @whereCondition += CONCAT(IIF(@whereCondition='', N' AND (', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7416 AND LOWER(dksze.C_ERTEK) LIKE ''%', LOWER(@gondviseloNeve), '%'')') END IF @tanuloEgyediAzon IS NOT NULL BEGIN SET @whereCondition += CONCAT(IIF(@whereCondition='', N' AND (', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7561 AND LOWER(dksze.C_ERTEK) LIKE ''%', LOWER(@tanuloEgyediAzon), '%'')') END IF @alkalmazottEgyediAzon IS NOT NULL BEGIN SET @whereCondition += CONCAT(IIF(@whereCondition='', N' AND (', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7562 AND LOWER(dksze.C_ERTEK) LIKE ''%', LOWER(@alkalmazottEgyediAzon), '%'')') END SET @whereCondition += IIF(@whereCondition != '', ')', '') SET @sql += @whereCondition END SET @sql += CONCAT(N' GROUP BY iktd.ID', IIF(@cnt > 0, N', dksz.C_DOKUMENTUMKULCSSZOTIPUS', ''), N' ) AS kulcsszotipusok GROUP BY kulcsszotipusok.iktdID ) AS doksik WHERE doksik.darab = ', IIF(@cnt > 0, @cnt, '1'), ' ORDER BY ID ASC') EXEC sp_executesql @sql; END GO