142 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			142 lines
		
	
	
		
			4.3 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'
 | 
						|
	INSERT INTO #TempTable
 | 
						|
	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 ','')
 | 
						|
 | 
						|
	 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'
 | 
						|
			AND tm.C_TIPUS != 1817
 | 
						|
	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
 | 
						|
 |