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

95 lines
4.1 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetKozossegiSzolgalatokData
GO
CREATE PROCEDURE uspGetKozossegiSzolgalatokData
@pIntezmenyId int
,@pOsztalyCsoportIdList nvarchar(max)
,@pIdoszakKezdete datetime
,@pIdoszakVege datetime
,@pOsszesOraszamKezdete int
,@pOsszesOraszamVege int
,@pTanuloNeve nvarchar(250)
,@pAnyjaNeve nvarchar(250)
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@sql nvarchar(max)
SET @sql = N'
SELECT *
FROM (
SELECT
currenttanulo.TanuloId as ID
,currenttanulo.TanuloId as TanuloId
,currenttanulo.TanuloNev as TanuloNev
,IIF(currenttanulo.Nevsorrend = ''T''
,currenttanulo.TanuloUtonev + '' '' + currenttanulo.TanuloVezeteknev
,currenttanulo.TanuloVezeteknev + '' '' + currenttanulo.TanuloUtonev) as TanuloNevElotagNelkul
,currenttanulo.AnyjaNeve as AnyjaNeve
,currenttanulo.SzuletesiIdo as SzuletesiIdo
,currenttanulo.OsztalyNev as OsztalyNev
,ISNULL(SUM(kozossegiszolgalat.C_ORASZAM),0) as OsszesOraszam
,tanulo.C_OKTATASIAZONOSITO as OktatasiAzonosito
FROM T_FELHASZNALO_OSSZES tanulo
LEFT JOIN (
SELECT DISTINCT
tanulo.C_OKTATASIAZONOSITO as OktatasiAzonosito
,tanulo.ID as TanuloId
,tanulo.C_NYOMTATASINEV as TanuloNev
,tanulo.C_NEVSORREND as Nevsorrend
,tanulo.C_VEZETEKNEV as TanuloVezeteknev
,tanulo.C_UTONEV as TanuloUtonev
,tanulo.C_ANYJANEVE as AnyjaNeve
,tanulo.C_SZULETESIDATUM as SzuletesiIdo
,osztalycsoport.C_NEV as OsztalyNev
FROM T_FELHASZNALO_OSSZES tanulo
LEFT JOIN T_TANULOCSOPORT_OSSZES tanulocsoport ON tanulocsoport.C_TANULOID = tanulo.ID
AND tanulocsoport.TOROLT = ''F''
LEFT JOIN T_OSZTALYCSOPORT_OSSZES osztalycsoport ON osztalycsoport.ID = tanulocsoport.C_OSZTALYCSOPORTID
AND osztalycsoport.TOROLT = ''F''
WHERE tanulo.TOROLT = ''F''
' + IIF(@pOsztalyCsoportIdList IS NOT NULL, 'AND osztalycsoport.ID IN (' + @pOsztalyCsoportIdList + ')', '') + N'
) currenttanulo ON currenttanulo.OktatasiAzonosito IS NOT NULL
' + IIF(@pTanuloNeve IS NOT NULL, 'AND currenttanulo.TanuloNev LIKE (''%''+ @pTanuloNeve +''%'')', '') + N'
' + IIF(@pAnyjaNeve IS NOT NULL, 'AND currenttanulo.AnyjaNeve LIKE (''%''+ @pAnyjaNeve +''%'')', '') + N'
LEFT JOIN T_TANULOKOZOSSEGISZOLGALAT_OSSZES kozossegiszolgalat ON kozossegiszolgalat.C_TANULOID = Tanulo.ID
AND kozossegiszolgalat.C_INTEZMENYID = @pIntezmenyId
' + IIF(@pIdoszakKezdete IS NOT NULL, 'AND kozossegiszolgalat.C_INTERVALLUMKEZDETE >= @pIdoszakKezdete', '') + N'
' + IIF(@pIdoszakVege IS NOT NULL, 'AND kozossegiszolgalat.C_INTERVALLUMVEGE <= @pIdoszakVege', '') + N'
AND kozossegiszolgalat.TOROLT = ''F''
WHERE tanulo.C_OKTATASIAZONOSITO = currenttanulo.OktatasiAzonosito
AND tanulo.C_INTEZMENYID = @pIntezmenyId
AND tanulo.TOROLT = ''F''
GROUP BY currenttanulo.TanuloId, currenttanulo.TanuloNev, currenttanulo.Nevsorrend, currenttanulo.TanuloVezeteknev,
currenttanulo.TanuloUtonev, currenttanulo.AnyjaNeve, currenttanulo.SzuletesiIdo, currenttanulo.OsztalyNev, tanulo.C_OKTATASIAZONOSITO
) result
WHERE 1 = 1
' + IIF(@pOsszesOraszamKezdete IS NOT NULL, 'AND @pOsszesOraszamKezdete >= result.OsszesOraszam', '') + N'
' + IIF(@pOsszesOraszamVege IS NOT NULL, 'AND @pOsszesOraszamVege <= result.OsszesOraszam', '') + N'
ORDER BY result.TanuloNevElotagNelkul ASC'
EXEC sp_executesql @sql, N'
@pIntezmenyId int
,@pOsztalyCsoportIdList nvarchar(max)
,@pIdoszakKezdete datetime
,@pIdoszakVege datetime
,@pOsszesOraszamKezdete int
,@pOsszesOraszamVege int
,@pTanuloNeve nvarchar(250)
,@pAnyjaNeve nvarchar(250)'
,@pIntezmenyId = @pIntezmenyId
,@pOsztalyCsoportIdList = @pOsztalyCsoportIdList
,@pIdoszakKezdete = @pIdoszakKezdete
,@pIdoszakVege = @pIdoszakVege
,@pOsszesOraszamKezdete = @pOsszesOraszamKezdete
,@pOsszesOraszamVege = @pOsszesOraszamVege
,@pTanuloNeve = @pTanuloNeve
,@pAnyjaNeve = @pAnyjaNeve
END
GO