DROP PROCEDURE IF EXISTS uspGetErettsegiEredmenyekKeresesData GO CREATE PROCEDURE [dbo].[uspGetErettsegiEredmenyekKeresesData] @pTanevId int ,@pFeladatKategoriaId int = NULL ,@pFeladatEllatasiHelyId int = NULL ,@pErettsegiEredmenyId int = NULL ,@pErdemjegy int = NULL ,@pSzazalek int = NULL AS BEGIN SET NOCOUNT ON; DECLARE @sql nvarchar(max) DECLARE @szazalekSzamitas nvarchar(250) = N'IIF((ee.C_ERETTSEGITANTARGY = 6589 AND ee.C_SZOBELIPONTSZAM IS NOT NULL ), FLOOR(ee.C_OSSZPONTSZAM*100.0/150), FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM))' DECLARE @erdemjegySzamitas nvarchar(1000) = N'--közép IIF(ee.C_ERETTSEGISZINT = 6579, IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) <= 24, 1, IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) BETWEEN 25 AND 39, 2, IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) BETWEEN 40 AND 59, 3, IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) BETWEEN 60 AND 79, 4, IIF(ee.C_OSSZPONTSZAM IS NOT NULL, 5, NULL) ) ) ) ), --emelt IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) <= 24, 1, IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) BETWEEN 25 AND 32, 2, IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) BETWEEN 33 AND 46, 3, IIF(FLOOR(ee.C_OSSZPONTSZAM*100.0/eta.C_OSSZMAXPONTSZAM) BETWEEN 47 AND 59, 4, IIF(ee.C_OSSZPONTSZAM IS NOT NULL, 5, NULL) ) ) ) ) )' SET @sql = N' SELECT DISTINCT ee.ID ,f.C_NYOMTATASINEV AS TanuloNev ,f.C_ANYJANEVE AS AnyjaNeve ,osztaly.C_NEV AS OsztalyNev ,osztaly.ID AS OsztalyId ,f.C_OKTATASIAZONOSITO AS OktatasiAzonosito ,ISNULL(CONVERT(nvarchar(25), f.C_SZULETESIDATUM, 102),'''') as SzuletesiDatum ,ee.C_ERETTSEGITANTARGY AS Tantargy ,ee.C_ERETTSEGISZINT AS Szint ,ee.C_ERETTSEGITIPUS AS Tipus ,ee.C_IRASBELIPONTSZAM AS IrasbeliPontszam ,ee.C_SZOBELIPONTSZAM AS SzobeliPontszam ,ee.C_GYAKORLATPONTSZAM AS GyakorlatiPontszam ,ee.C_MEGJEGYZES AS Megjegyzes ,ee.C_OSSZPONTSZAM AS OsszPontszam ,' SET @sql += @szazalekSzamitas SET @sql += N' AS Szazalek ,' SET @sql += @erdemjegySzamitas SET @sql += N' AS Erdemjegy FROM T_ERETTSEGIEREDMENY_OSSZES ee LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = ee.C_ERETTSEGITANTARGY AND d.TOROLT = ''F'' LEFT JOIN T_ERETTSEGITANTARGYADATOK_OSSZES eta ON eta.C_ERETTSEGITANTARGY = ee.C_ERETTSEGITANTARGY AND eta.TOROLT = ''F'' AND eta.C_ERETTSEGISZINT = ee.C_ERETTSEGISZINT LEFT JOIN T_TANULO_OSSZES t ON t.ID = ee.C_TANULOID AND t.TOROLT = ''F'' LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = t.ID AND t.TOROLT = ''F'' LEFT JOIN ( SELECT tcs.C_TANULOID, ocs.C_NEV, ocs.ID FROM T_TANULOCSOPORT_OSSZES tcs INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND ocs.TOROLT = ''F'' AND (@pFeladatKategoriaId IS NULL OR ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId) AND (@pFeladatEllatasiHelyId IS NULL OR ocs.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyId) INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID AND o.TOROLT = ''F'' WHERE tcs.TOROLT = ''F'' ) osztaly ON t.ID = osztaly.C_TANULOID WHERE ee.TOROLT = ''F'' AND ee.C_TANEVID = @pTanevId' SET @sql += IIF(@pErettsegiEredmenyId IS NOT NULL, N' AND ee.ID = @pErettsegiEredmenyId', '') SET @sql += IIF(@pErdemjegy IS NOT NULL, N' AND ' + @erdemjegySzamitas + ' = @pErdemjegy', '') SET @sql += IIF(@pSzazalek IS NOT NULL, N' AND ' + @szazalekSzamitas + ' = @pSzazalek', '') EXEC sp_executesql @sql ,N' @pTanevId int ,@pFeladatKategoriaId int ,@pFeladatEllatasiHelyId int ,@pErdemjegy int ,@pSzazalek int ,@pErettsegiEredmenyId int ' ,@pTanevId = @pTanevId ,@pFeladatKategoriaId = @pFeladatKategoriaId ,@pFeladatEllatasiHelyId = @pFeladatEllatasiHelyId ,@pErdemjegy = @pErdemjegy ,@pSzazalek = @pSzazalek ,@pErettsegiEredmenyId = @pErettsegiEredmenyId END