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

107 lines
3.3 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetTanuloErtekelesMondatbankSzuresData
GO
CREATE PROCEDURE uspGetTanuloErtekelesMondatbankSzuresData
@pTanevId int
,@pTanuloErtekelesTipusIdList nvarchar(max) = NULL
,@pEvfolyamTipusIdList nvarchar(max) = NULL
,@pTantargyTipusIdJSON nvarchar(max) = NULL
,@pRovidNev nvarchar(3) = NULL
,@pSzoveg nvarchar(4000) = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sql nvarchar(max)
SET @sql = N''
SET @sql += IIF(@pTanuloErtekelesTipusIdList IS NOT NULL, N'
CREATE TABLE #ErtekelesTipusIdList (
Id int
)
INSERT INTO #ErtekelesTipusIdList
SELECT value AS Id FROM string_split(''' + @pTanuloErtekelesTipusIdList + ''', '','')
','')
SET @sql += IIF(@pEvfolyamTipusIdList IS NOT NULL, N'
CREATE TABLE #EvfolyamTipusIdList (
Id int
)
INSERT INTO #EvfolyamTipusIdList
SELECT value AS Id FROM string_split(''' + @pEvfolyamTipusIdList + ''', '','')
', '')
SET @sql += IIF(@pTantargyTipusIdJSON IS NOT NULL, N'
CREATE TABLE #TantargyTipus (
TantargyId int,
TipusId int
)
INSERT INTO #TantargyTipus
SELECT
CASE
WHEN TantargyId > 0 THEN TantargyId
ELSE NULL
END
,TipusId
FROM OPENJSON(@pTantargyTipusIdJSON)
WITH (
TantargyId int ''$.Item1'' ,
TipusId int ''$.Item2''
)', '')
SET @sql += N'
SELECT
tem.ID AS ID
,tem.C_ROVIDNEV AS RovidNev
,tem.C_SZOVEG AS Szoveg
,tem.C_ERTEKELESTIPUSA AS TanuloErtekelesTipusId
,tem.C_EVFOLYAMTIPUSA AS EvfolyamTipusId
,tem.C_TANTARGYID AS TantargyId
,CASE
WHEN tem.C_TIPUSID = 7358 THEN ''Magatartás''
WHEN tem.C_TIPUSID = 7359 THEN ''Szorgalom''
ELSE IIF(tem.C_TANTARGYID IS NULL, ''Mind'', tt.C_NEV)
END AS TantargyNev
,tem.C_TIPUSID AS TipusId
,tem.C_IMPORTALT AS Importalt
FROM T_ERTEKELESMONDATBANK_OSSZES tem
LEFT JOIN T_TANTARGY_OSSZES tt ON tt.ID = tem.C_TANTARGYID AND tt.C_TANEVID = tem.C_TANEVID AND tt.TOROLT = ''F'''
SET @sql += IIF(@pTantargyTipusIdJSON IS NOT NULL, N'
INNER JOIN #TantargyTipus tantip ON tantip.TipusId = tem.C_TIPUSID
AND ISNULL(tantip.TantargyId, -1) = ISNULL(tem.C_TANTARGYID, -1)
', '')
set @sql += IIF(@pTanuloErtekelesTipusIdList IS NOT NULL, N'
INNER JOIN #ErtekelesTipusIdList idlisttet ON (idListtet.Id != 0 AND idlisttet.Id = tem.C_ERTEKELESTIPUSA)
OR (idlisttet.Id = 0 AND tem.C_ERTEKELESTIPUSA IS NULL)
', '')
set @sql += IIF(@pEvfolyamTipusIdList IS NOT NULL, N'
INNER JOIN #EvfolyamTipusIdList idlistet ON (idListet.Id != 0 AND idlistet.Id = tem.C_EVFOLYAMTIPUSA)
OR (idlistet.Id = 0 AND tem.C_EVFOLYAMTIPUSA IS NULL)
', '')
SET @sql += N'WHERE tem.C_TANEVID = @pTanevId
AND tem.TOROLT = ''F'''
SET @sql += IIF ( @pRovidNev IS NOT NULL, N'
AND tem.C_ROVIDNEV = @pRovidNev', N'')
SET @sql += IIF (@pSzoveg IS NOT NULL, N'
AND tem.C_SZOVEG LIKE ''%'' + @pSzoveg + ''%''', N'')
EXEC sys.sp_executesql @sql, N'
@pTanevId int
,@pTanuloErtekelesTipusIdList nvarchar
,@pEvfolyamTipusIdList nvarchar
,@pTantargyTipusIdJSON nvarchar(max)
,@pRovidNev nvarchar(3)
,@pSzoveg nvarchar(4000)'
,@pTanevId = @pTanevId
,@pTanuloErtekelesTipusIdList = @pTanuloErtekelesTipusIdList
,@pEvfolyamTipusIdList = @pEvfolyamTipusIdList
,@pTantargyTipusIdJSON = @pTantargyTipusIdJSON
,@pRovidNev = @pRovidNev
,@pSzoveg = @pSzoveg
END
GO