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

104 lines
4.6 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetSzervezetData
GO
CREATE PROCEDURE uspGetSzervezetData
@pIntezmenyId int
,@pTanevId int
,@pSzervezetId int = NULL
,@pAdatokHalmaza int = 1 -- 0: megadott szervezet és alszervezetei, 1: megadott szervezet (SzervezetId = NULL esetén az ősszes székhely), 2: megadott szervezet alszervezetei
,@pNev nvarchar(255) = NULL
,@pAzonosito nvarchar(255) = NULL
,@pSzervezetCime nvarchar(255) = NULL
,@pTanulokSzamaTol int = NULL
,@pTanulokSzamaIg int = NULL
,@pOktatokSzamaTol int = NULL
,@pOktatokSzamaIg int = NULL
,@pCsoportokSzamaTol int = NULL
,@pCsoportokSzamaIg int = NULL
,@pTantargyakSzamaTol int = NULL
,@pTantargyakSzamaIg int = NULL
,@pHelyszinSzamaTol int = NULL
,@pHelyszinSzamaIg int = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql nvarchar(max) = N''
SET @sql = N'
CREATE TABLE #LathatoSzervezetek (ID int)
INSERT INTO #LathatoSzervezetek (ID)
SELECT lsz.ID
FROM fnGetLathatoSzervezetek(@pIntezmenyId, @pTanevId, @pSzervezetId, @pAdatokHalmaza) lsz
'
SET @sql += N'
SELECT * FROM (
SELECT
sz.ID AS SzervezetId
,sz.C_TIPUS AS SzervezetTipus
,sz.C_NEV AS SzervezetNev
,sz.C_AZONOSITO AS SzervezetAzonosito
,sz.C_SZERVEZETCIM AS SzervezetCim
,sz.C_DUALISHELYSZINTIPUSID AS HelyszinTipusId
,COUNT(DISTINCT cs.ID) AS CsoportokSzama
,COUNT(DISTINCT ma.ID) AS OktatokSzama
,COUNT(DISTINCT tta.ID) AS TanulokSzama
,COUNT(DISTINCT tt.ID) AS TantargyakSzama
,COUNT(DISTINCT t.ID) AS HelyszinekSzama
,sz.CREATOR AS RogzitoId
,sz.C_PARENTSZERVEZETID AS ParentSzervezetId
,psz.C_NEV AS ParentSzervezetNev
FROM T_SZERVEZET_OSSZES sz
INNER JOIN #LathatoSzervezetek lsz ON lsz.ID = sz.ID
LEFT JOIN T_CSOPORT_OSSZES cs ON cs.C_SZERVEZETID = sz.ID AND cs.C_ALTANEVID = sz.C_TANEVID AND cs.TOROLT = ''F''
LEFT JOIN T_MUNKAUGYIADATOK_OSSZES ma ON ma.C_SZERVEZETID = sz.ID AND ma.C_TANEVID = sz.C_TANEVID AND ma.TOROLT = ''F''
LEFT JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.C_SZERVEZETID = sz.ID AND tta.C_TANEVID = sz.C_TANEVID AND tta.TOROLT = ''F''
LEFT JOIN T_TANTARGY_OSSZES tt ON tt.C_SZERVEZETID = sz.ID AND tt.C_TANEVID = sz.C_TANEVID AND tt.TOROLT = ''F''
LEFT JOIN T_TEREM_OSSZES t ON t.C_SZERVEZETID = sz.ID AND t.C_TANEVID = sz.C_TANEVID AND t.TOROLT = ''F''
LEFT JOIN T_SZERVEZET_OSSZES psz ON psz.ID = sz.C_PARENTSZERVEZETID AND psz.C_TANEVID = sz.C_TANEVID AND psz.TOROLT = ''F''
WHERE sz.C_TANEVID = @pTanevId
AND sz.TOROLT = ''F''
GROUP BY sz.ID, sz.C_NEV, sz.C_SZERVEZETCIM, sz.C_AZONOSITO, sz.C_TIPUS, sz.C_DUALISHELYSZINTIPUSID, sz.CREATOR, sz.C_PARENTSZERVEZETID, psz.C_NEV
) x
WHERE 1 = 1
'
SET @sql = CONCAT(
@sql
,IIF(@pNev > N'', N' AND SzervezetNev LIKE N''%'' + @pNev + N''%''', N'')
,IIF(@pAzonosito > N'', N' AND SzervezetAzonosito LIKE N''%'' + @pAzonosito + N''%''', N'')
,IIF(@pSzervezetCime > N'', N' AND SzervezetCim LIKE N''%'' + @pSzervezetCime + N''%''', N'')
,IIF(@pTanulokSzamaTol IS NOT NULL, N' AND TanulokSzama >=' + CAST(@pTanulokSzamaTol AS char(10)) + ' ', N'')
,IIF(@pTanulokSzamaIg IS NOT NULL, N' AND TanulokSzama <=' + CAST(@pTanulokSzamaIg AS char(10)) + ' ', N'')
,IIF(@pOktatokSzamaTol IS NOT NULL, N' AND OktatokSzama >=' + CAST(@pOktatokSzamaTol AS char(10)) + ' ', N'')
,IIF(@pOktatokSzamaIg IS NOT NULL, N' AND OktatokSzama <=' + CAST(@pOktatokSzamaIg AS char(10)) + ' ', N'')
,IIF(@pCsoportokSzamaTol IS NOT NULL, N' AND CsoportokSzama >=' + CAST(@pCsoportokSzamaTol AS char(10)) + ' ', N'')
,IIF(@pCsoportokSzamaIg IS NOT NULL, N' AND CsoportokSzama <=' + CAST(@pCsoportokSzamaIg AS char(10)) + ' ', N'')
,IIF(@pTantargyakSzamaTol IS NOT NULL, N' AND TantargyakSzama >=' + CAST(@pTantargyakSzamaTol AS char(10)) + ' ', N'')
,IIF(@pTantargyakSzamaIg IS NOT NULL, N' AND TantargyakSzama <=' + CAST(@pTantargyakSzamaIg AS char(10)) + ' ', N'')
,IIF(@pHelyszinSzamaTol IS NOT NULL, N' AND HelyszinSzama >=' + CAST(@pHelyszinSzamaTol AS char(10)) + ' ', N'')
,IIF(@pHelyszinSzamaIg IS NOT NULL, N' AND HelyszinSzama <=' + CAST(@pHelyszinSzamaIg AS char(10)) + ' ', N'')
)
EXECUTE sp_executesql @sql, N'
@pIntezmenyId int
,@pTanevId int
,@pSzervezetId int
,@pAdatokHalmaza int
,@pNev nvarchar(255)
,@pAzonosito nvarchar(255)
,@pSzervezetCime nvarchar(255)'
,@pIntezmenyId = @pIntezmenyId
,@pTanevId = @pTanevId
,@pSzervezetId = @pSzervezetId
,@pAdatokHalmaza = @pAdatokHalmaza
,@pNev = @pNev
,@pAzonosito = @pAzonosito
,@pSzervezetCime = @pSzervezetCime
END
GO