DROP PROCEDURE IF EXISTS dbo.uspIktatottDokumentumLetezik GO CREATE PROCEDURE dbo.uspIktatottDokumentumLetezik @intezmenyId int, @tanevId int = NULL, @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, @teremId int = NULL AS BEGIN SET NOCOUNT ON; DECLARE @paramDefinition nvarchar(MAX) DECLARE @nct int = 0 SET @nct = 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+ CASE WHEN @teremId 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(@nct > 0, 'dksz.C_DOKUMENTUMKULCSSZOTIPUS, ', ''), N'COUNT(iktd.C_INTEZMENYID) AS darab FROM T_IKTATOTTDOKUMENTUM_OSSZES iktd', IIF(@nct > 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', IIF(@tanevId IS NOT NULL, N' AND iktd.C_TANEVID = @tanevId', ''), N' AND iktd.C_DOKUMENTUMKATEGORIA = @dokumentumKategoria AND iktd.C_DOKUMENTUMTIPUS = @dokumentumTipus AND iktd.C_DOKUMENTUMELEMISZINT = @elemiSzint AND iktd.C_ISFOSZAMOS = ''T'' ' ) IF @nct > 0 BEGIN IF @osztalyId IS NOT NULL BEGIN SET @whereCondition += CONCAT(IIF(@whereCondition='', N' AND (',''), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7399 AND dksze.C_ERTEK = CAST(@osztalyId as nvarchar))') 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 = CAST(@csoportId as nvarchar))') 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 = CAST(@tanarId as nvarchar))') 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 = CAST(@evfolyamId as nvarchar))') 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 ''%'' + @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 ''%'' + @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 ''%'' + @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 ''%'' + @alkalmazottEgyediAzon + ''%'')') END IF @teremId IS NOT NULL BEGIN SET @whereCondition += CONCAT(IIF(@whereCondition='', N' AND (', N' OR '), N'(dksz.C_DOKUMENTUMKULCSSZOTIPUS = 7674 AND dksze.C_ERTEK = CAST(@teremId as nvarchar))') END SET @whereCondition += IIF(@whereCondition != '', ')', '') SET @sql += @whereCondition END SET @sql += CONCAT(N' GROUP BY iktd.ID', IIF(@nct > 0, N', dksz.C_DOKUMENTUMKULCSSZOTIPUS', ''), N' ) AS kulcsszotipusok GROUP BY kulcsszotipusok.iktdID ) AS doksik WHERE doksik.darab = ', IIF(@nct > 0, '@cnt', '1'), ' ORDER BY ID DESC') SET @paramDefinition = N'@intezmenyId int, @tanevId int, @dokumentumKategoria int, @dokumentumTipus int, @elemiSzint int, @osztalyId int, @csoportId int, @tanarId int, @evfolyamId int, @tanuloNeve nvarchar(max), @gondviseloNeve nvarchar(max), @tanuloEgyediAzon nvarchar(max), @alkalmazottEgyediAzon nvarchar(max), @teremId int, @cnt int ' EXEC sp_executesql @sql, @paramDefinition, @intezmenyId = @intezmenyId, @tanevId = @tanevId, @dokumentumKategoria = @dokumentumKategoria, @dokumentumTipus = @dokumentumTipus, @elemiSzint = @elemiSzint, @osztalyId = @osztalyId, @csoportId = @csoportId, @tanarId = @tanarId, @evfolyamId = @evfolyamId, @tanuloNeve = @tanuloNeve, @gondviseloNeve = @gondviseloNeve, @tanuloEgyediAzon = @tanuloEgyediAzon, @alkalmazottEgyediAzon = @alkalmazottEgyediAzon, @teremId = @teremId, @cnt = @nct END GO