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