kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspGetErettsegiEredmenyekKeresesData.sql
2024-03-13 00:33:46 +01:00

102 lines
No EOL
4.1 KiB
Transact-SQL

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