kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20191121125306_DB_1624/sp_GetMulasztasokNaploNezetData.sql
2024-03-13 00:33:46 +01:00

131 lines
4.4 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS dbo.sp_GetMulasztasokNaploNezetData
GO
CREATE PROCEDURE dbo.sp_GetMulasztasokNaploNezetData
@pOsztalyCsoportId int
,@pDatum date
,@pCsoportTipusTanoraiCeluId int
,@pIsCsoportVez int = 0
AS
BEGIN
CREATE TABLE #TempTable(
TanitasiOraId INT NOT NULL,
OsztalyCsoportId INT NOT NULL,
OsztalyCsoportNev NVARCHAR(255) NOT NULL,
OsztalyNev NVARCHAR(255) NOT NULL,
IsOsztalyOraja BIT NOT NULL,
IsTanoraiCelu BIT NOT NULL,
IsTanoraiCelunakJelolt BIT NOT NULL,
TantargyId INT NOT NULL,
TantargyNev NVARCHAR(255) NOT NULL,
TanarId INT NOT NULL,
TanarNev NVARCHAR(255) NOT NULL,
OraSorszam INT NULL,
OraKezdete DATETIME NULL
);
DECLARE @sql nvarchar(max) = ''
SET @sql += N'
SELECT
tn.ID AS TanitasiOraId
,ocs.ID AS OsztalyCsoportId
,ocs.C_NEV AS OsztalyCsoportNev
,o.C_NEV AS OsztalyNev
,IIF(ocs.ID = @pOsztalyCsoportId, 1, 0) AS IsOsztalyOraja
,IIF(cst.ID = @pCsoportTipusTanoraiCeluId, 1, 0) AS IsTanoraiCelu
,IIF(cst.C_ISTANORAICELU = ''T'', 1, 0) AS IsTanoraiCelunakJelolt
,tt.ID AS TantargyId
,tt.C_NEV AS TantargyNev
,fa.ID AS TanarId
,fa.C_NYOMTATASINEV AS TanarNev
,IIF(tn.C_CSENGETESIRENDORAID IS NOT NULL, tn.C_ORASZAM, NULL) AS OraSorszam
,IIF(tn.C_CSENGETESIRENDORAID IS NULL, tn.C_ORAKEZDETE, NULL) AS OraKezdete
FROM T_TANITASIORA tn
' + IIF(@pIsCsoportVez = 0, N' INNER JOIN dbo.fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyCsoportId, @pDatum, @pDatum) kocs ON kocs.ID = tn.C_OSZTALYCSOPORTID ', '')
SET @sql += N'
INNER JOIN T_TANTARGY tt ON tt.ID = tn.C_TANTARGYID AND tt.TOROLT = ''F''
INNER JOIN T_FELHASZNALO fa ON fa.ID = tn.C_ORATULAJDONOSID AND fa.TOROLT = ''F''
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tn.C_OSZTALYCSOPORTID AND ocs.TOROLT = ''F''
LEFT JOIN T_CSOPORT cs ON cs.ID = tn.C_OSZTALYCSOPORTID AND cs.TOROLT = ''F''
LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = ''F''
INNER JOIN T_OSZTALYCSOPORT o ON o.ID = @pOsztalyCsoportId AND o.TOROLT = ''F''
WHERE tn.C_DATUM = @pDatum
AND tn.C_MEGTARTOTT = ''T''
AND tn.TOROLT = ''F''
' + IIF(@pIsCsoportVez = 1, N' AND tn.C_OSZTALYCSOPORTID = @pOsztalyCsoportId ','')
INSERT INTO #TempTable
EXEC sp_executesql @sql, N'
@pOsztalyCsoportId INT
,@pDatum DATE
,@pCsoportTipusTanoraiCeluId INT
,@pIsCsoportVez INT'
,@pOsztalyCsoportId = @pOsztalyCsoportId
,@pDatum = @pDatum
,@pCsoportTipusTanoraiCeluId = @pCsoportTipusTanoraiCeluId
,@pIsCsoportVez = @pIsCsoportVez
SELECT
tcs.C_TANULOID AS TanuloId
,ft.C_NYOMTATASINEV AS TanuloNev
,ft.C_ANYJANEVE AS AnyjaNeve
,ft.C_SZULETESIDATUM AS SzuletesiIdo
,tbl.OsztalyCsoportId
,tbl.OsztalyCsoportNev
,tbl.OsztalyNev
,tbl.IsOsztalyOraja
,tbl.IsTanoraiCelu
,tbl.IsTanoraiCelunakJelolt
,tbl.TantargyId
,tbl.TantargyNev
,tbl.TanarId
,tbl.TanarNev
,tbl.OraSorszam
,tbl.OraKezdete
,tbl.TanitasiOraId
,tm.ID AS MulasztasId
,tm.C_TIPUS AS MulasztasTipus
,tm.C_IGAZOLT AS IsIgazolt
,tm.C_IGAZOLASTIPUSA AS IgazolasTipus
,tm.C_MEGJEGYZES AS Megjegyzes
,tm.C_KESESPERCBEN AS KesesPercben
FROM (
SELECT
C_TANULOID
,C_OSZTALYCSOPORTID
FROM T_TANULOCSOPORT
WHERE C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND C_BELEPESDATUM <= @pDatum
AND (C_KILEPESDATUM > @pDatum OR C_KILEPESDATUM IS NULL)
AND TOROLT = 'F'
AND C_TANULOID IN (
SELECT
C_TANULOID
FROM T_TANULOCSOPORT
WHERE T_TANULOCSOPORT.C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #TempTable)
AND T_TANULOCSOPORT.C_BELEPESDATUM <= @pDatum
AND (T_TANULOCSOPORT.C_KILEPESDATUM > @pDatum OR T_TANULOCSOPORT.C_KILEPESDATUM IS NULL)
)
) tcs
CROSS JOIN #TempTable tbl
INNER JOIN T_FELHASZNALO ft ON tcs.C_TANULOID = ft.ID
AND ft.TOROLT = 'F'
LEFT JOIN T_TANULOMULASZTAS tm ON tcs.C_TANULOID = tm.C_ORATANULOIID
AND tm.C_TANITASIORAKID = tbl.TanitasiOraId
AND tm.TOROLT = 'F'
WHERE
tcs.C_TANULOID IN (
SELECT
C_TANULOID
FROM T_TANULOCSOPORT
WHERE tbl.OsztalyCsoportId = T_TANULOCSOPORT.C_OSZTALYCSOPORTID
AND T_TANULOCSOPORT.C_BELEPESDATUM <= @pDatum
AND (T_TANULOCSOPORT.C_KILEPESDATUM > @pDatum OR T_TANULOCSOPORT.C_KILEPESDATUM IS NULL)
)
AND (tm.C_TIPUS IS NULL OR tm.C_TIPUS <> 1817)
ORDER BY ft.C_NYOMTATASINEV
END
GO