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

89 lines
No EOL
4.9 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspCsoportKereses
GO
CREATE PROCEDURE uspCsoportKereses
@pTanevId INT = null
,@pSearchDate DATETIME = null
,@pCsoportNev NVARCHAR(512) = null
,@pNaEvfolyamTipusa BIT = null
,@pEvfolyamID INT = null
,@pCsopvezID INT = null
,@pTeremID INT = null
,@pVegzosSearch INT = null
,@pCsopTipID INT = null
,@pOsztalyID INT = null
,@pNaploNyit DATETIME = null
,@pNaploZar DATETIME = null
,@pFeladatEllatasiHelyID INT = null
,@pFeladatKategoriaId INT = null
,@pMuveszetiAgId INT = null
,@pUresCsoport BIT = 0
AS
SET NOCOUNT ON;
SELECT
T_CSOPORT_OSSZES.ID
,T_TANEV_OSSZES.C_NEV AS TanevNev
,T_TANEV_OSSZES.ID AS TanevId
,T_OSZTALYCSOPORT_OSSZES.C_NEV AS CsoportNev
,fh.C_NYOMTATASINEV AS CsoportvezetoNev
,ISNULL(T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA, osztalyBontasNev.C_EVFOLYAMTIPUSA) AS EvfolyamTipusaId
,T_TEREM_OSSZES.c_nev AS TeremNev
,T_OSZTALYCSOPORT_OSSZES.C_VEGZOSEVFOLYAM AS Vegzos
,T_CSOPORT_OSSZES.C_TIPUSA AS CsopTip
,CONCAT(ISNULL(TANULOK.SZAM,0), ' (', ISNULL(tcsArchiv.ArchivTanulokSzama, 0), ')') AS TanulokSzama
,ISNULL(TANULOK.SZAM, 0) * 1000 + ISNULL(tcsArchiv.ArchivTanulokSzama, 0) AS TanulokSzamaOrder
,ISNULL(TANULOK.SZAM,0) AS AktualisTanulokSzama
,T_DICTIONARYITEMBASE_OSSZES.C_VALUE AS EvfolyamSorszama
,osztalyBontasNev.C_NEV AS OsztalyBontasNev
,T_OSZTALYCSOPORT_OSSZES.C_MUVESZETIAGID AS MuveszetiAgId
FROM T_CSOPORT_OSSZES WITH(NOLOCK)
INNER JOIN T_OSZTALYCSOPORT_OSSZES WITH(NOLOCK) ON T_OSZTALYCSOPORT_OSSZES.ID = T_CSOPORT_OSSZES.ID AND T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F'
LEFT JOIN T_OSZTALYCSOPORT_OSSZES osztalyBontasNev WITH(NOLOCK) ON osztalyBontasNev.ID = T_CSOPORT_OSSZES.C_OSZTALYBONTASID AND osztalyBontasNev.TOROLT = 'F'
LEFT JOIN T_TANEV_OSSZES ON T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID AND T_TANEV_OSSZES.TOROLT = 'F'
LEFT JOIN T_TEREM_OSSZES ON T_TEREM_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TEREMID AND T_TEREM_OSSZES.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ON T_DICTIONARYITEMBASE_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA AND T_DICTIONARYITEMBASE_OSSZES.C_INTEZMENYID = T_OSZTALYCSOPORT_OSSZES.C_INTEZMENYID AND T_DICTIONARYITEMBASE_OSSZES.C_TANEVID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID AND T_DICTIONARYITEMBASE_OSSZES.TOROLT = 'F'
LEFT JOIN (
SELECT
C_OSZTALYCSOPORTID
,COUNT(DISTINCT C_TANULOID) AS SZAM
FROM T_TANULOCSOPORT_OSSZES WITH(NOLOCK)
INNER JOIN T_TANEV_OSSZES tanev ON tanev.ID = T_TANULOCSOPORT_OSSZES.C_TANEVID AND tanev.C_INTEZMENYID = T_TANULOCSOPORT_OSSZES.C_INTEZMENYID
WHERE T_TANULOCSOPORT_OSSZES.TOROLT = 'F'
AND (
(
IIF( @pSearchDate > tanev.C_UTOLSONAP ,tanev.C_UTOLSONAP,@pSearchDate) BETWEEN T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM AND ISNULL(T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM, tanev.C_UTOLSONAP) AND tanev.C_AKTIV = 'T'
)
OR
tanev.C_AKTIV = 'F'
)
GROUP BY C_OSZTALYCSOPORTID
) TANULOK ON TANULOK.C_OSZTALYCSOPORTID = T_CSOPORT_OSSZES.ID
LEFT JOIN (
SELECT
COUNT(DISTINCT C_TANULOID) AS ArchivTanulokSzama
,C_OSZTALYCSOPORTID
FROM T_TANULOCSOPORT_OSSZES tcs WITH(NOLOCK)
WHERE tcs.TOROLT = 'F'
GROUP BY C_OSZTALYCSOPORTID
) tcsArchiv ON tcsArchiv.C_OSZTALYCSOPORTID = T_CSOPORT_OSSZES.ID
LEFT JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = T_CSOPORT_OSSZES.C_CSOPORTVEZETOID AND fh.TOROLT ='F' AND fh.C_TANEVID = T_CSOPORT_OSSZES.C_ALTANEVID
WHERE T_CSOPORT_OSSZES.TOROLT = 'F'
AND T_CSOPORT_OSSZES.C_ALTANEVID = @pTanevId
AND (@pCsoportNev IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_NEV LIKE '%' + @pCsoportNev + '%')
AND (@pNaEvfolyamTipusa IS NULL OR ((T_CSOPORT_OSSZES.C_OSZTALYBONTASID IS NULL AND (T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA = @pEvfolyamID or T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA IS NULL)) OR (osztalyBontasNev.ID IS NOT NULL AND (osztalyBontasNev.C_EVFOLYAMTIPUSA = @pEvfolyamID or osztalyBontasNev.C_EVFOLYAMTIPUSA IS NULL))))
AND (@pEvfolyamID IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA = @pEvfolyamID)
AND (@pCsopvezID IS NULL OR T_CSOPORT_OSSZES.C_CSOPORTVEZETOID = @pCsopvezID)
AND (@pTeremID IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_TEREMID = @pTeremID)
AND (@pCsopTipID IS NULL OR T_CSOPORT_OSSZES.C_TIPUSA = @pCsopTipID)
AND (@pOsztalyID IS NULL OR T_CSOPORT_OSSZES.C_OSZTALYBONTASID = @pOsztalyID)
AND (@pNaploNyit IS NULL OR T_CSOPORT_OSSZES.C_CSOPORTNAPLOMEGNYITASA >= @pNaploNyit)
AND (@pNaploZar IS NULL OR T_CSOPORT_OSSZES.C_CSOPORTNAPLOZARASA <= @pNaploZar)
AND (@pFeladatEllatasiHelyID IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_FELADATELLATASIHELYID = @pFeladatEllatasiHelyID)
AND (@pFeladatKategoriaId IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = @pFeladatKategoriaId)
AND (@pMuveszetiAgId IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_MUVESZETIAGID = @pMuveszetiAgId)
AND (@pUresCsoport = 0 OR ISNULL(TANULOK.SZAM, 0) = 0)
AND (@pVegzosSearch IS NULL OR T_OSZTALYCSOPORT_OSSZES.C_VEGZOSEVFOLYAM = CASE WHEN @pVegzosSearch = 1 THEN 'T' ELSE 'F' END)
AND T_CSOPORT_OSSZES.C_SZERVEZETID IS NULL
OPTION(RECOMPILE)
GO