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

100 lines
3.3 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetTanarTanitottTanuloi
GO
CREATE PROCEDURE uspGetTanarTanitottTanuloi
@pTanarId int
,@pTanevId int
,@pBukasAtlag float
,@pCsakBukasraAllok bit = 0
,@pFoglalkozasId int = NULL
,@pFoglalkozasTipusId int = NULL
,@pFeladatKategoriaId int = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql nvarchar (max)
SET @sql = N'
SELECT
fh.ID
,fh.C_NYOMTATASINEV AS TanuloNev
,IIF(fh.C_NEVSORREND = ''T'', fh.C_UTONEV + '' '' + fh.C_VEZETEKNEV, fh.C_VEZETEKNEV + '' '' + fh.C_UTONEV) AS TanuloNevElotagNelkul
,ocs.C_NEV AS FoglalkozasNev
,ocs.ID AS OsztalyCsoportId
,f.C_FOGLALKOZASTIPUSA AS Tipus
,f.C_TANTARGYID AS TantargyId
,tgy.C_NEV AS TantargyNev
FROM T_FOGLALKOZAS_OSSZES f
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON f.C_OSZTALYCSOPORTID = ocs.ID
AND ocs.C_TANEVID = f.C_TANEVID
AND ocs.TOROLT = ''F''
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON ocs.ID = tcs.C_OSZTALYCSOPORTID
AND tcs.C_BELEPESDATUM < GETDATE()
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= GETDATE())
AND tcs.C_TANEVID = f.C_TANEVID
AND tcs.TOROLT = ''F''
INNER JOIN T_FELHASZNALO_OSSZES fh ON tcs.C_TANULOID = fh.ID
AND fh.C_TANEVID = f.C_TANEVID
AND fh.TOROLT = ''F''
INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = f.C_TANTARGYID
AND tgy.C_TANEVID = f.C_TANEVID
AND tgy.TOROLT = ''F'''
IF @pCsakBukasraAllok = 1
SET @sql += N'
INNER JOIN T_TANULOERTEKELES_OSSZES te ON te.C_OSZTALYCSOPORTID = f.C_OSZTALYCSOPORTID
AND te.C_ERTEKELESOSZTALYZATID IS NOT NULL
AND te.C_TANTARGYID = f.C_TANTARGYID
AND te.C_TANULOID = fh.ID
AND te.C_TANEVID = f.C_TANEVID
AND te.TOROLT = ''F''
INNER JOIN T_OSZTALYZATTIPUS_OSSZES ot ON te.C_ERTEKELESOSZTALYZATID = ot.ID
AND ot.C_ALTANEVID = f.C_TANEVID
AND ot.TOROLT = ''F''
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON ot.ID = d.ID
AND d.C_TANEVID = f.C_TANEVID
AND d.TOROLT = ''F''
LEFT JOIN T_ERTEKELESMOD_OSSZES em ON em.ID = te.C_ERTEKELESMODID
AND em.C_ALTANEVID = f.C_TANEVID
AND em.TOROLT = ''F'''
SET @sql += N'
WHERE f.C_TANEVID = @pTanevId
AND f.TOROLT = ''F''
AND f.C_TANARID = @pTanarId
' + IIF(@pFoglalkozasId IS NOT NULL, 'AND f.ID = @pFoglalkozasId', '') + '
' + IIF(@pFoglalkozasTipusId IS NOT NULL, 'AND f.C_FOGLALKOZASTIPUSA = @pFoglalkozasTipusId', '') + '
' + IIF(@pFeladatKategoriaId IS NOT NULL, 'AND ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId', '') + ''
IF @pCsakBukasraAllok = 1
SET @sql += N'
GROUP BY
fh.ID
,fh.C_NYOMTATASINEV
,IIF(fh.C_NEVSORREND = ''T'', fh.C_UTONEV + '' '' + fh.C_VEZETEKNEV, fh.C_VEZETEKNEV + '' '' + fh.C_UTONEV)
,ocs.C_NEV
,ocs.ID
,f.C_FOGLALKOZASTIPUSA
,f.C_TANTARGYID
,tgy.C_NEV
HAVING ROUND(SUM(CAST(d.C_VALUE AS float) * CAST(ISNULL(em.C_SULY, 100) AS float) / 100) / SUM(CAST(ISNULL(em.C_SULY, 100) AS float) / 100), 2) < @pBukasAtlag'
EXEC sp_executesql @sql, N'
@pTanarId int
,@pTanevId int
,@pBukasAtlag float
,@pFoglalkozasId int
,@pFoglalkozasTipusId int
,@pFeladatKategoriaId int'
,@pTanarId = @pTanarId
,@pTanevId = @pTanevId
,@pBukasAtlag = @pBukasAtlag
,@pFoglalkozasId = @pFoglalkozasId
,@pFoglalkozasTipusId = @pFoglalkozasTipusId
,@pFeladatKategoriaId = @pFeladatKategoriaId
END
GO