DROP PROCEDURE IF EXISTS [dbo].[uspGetTanulokMulasztasaiKesesei] GO -- ========================================================================================== -- Description: -- ========================================================================================== CREATE PROCEDURE [dbo].[uspGetTanulokMulasztasaiKesesei] @pIntezmenyId INT ,@pTanevId INT ,@pOsztalyCsoportId INT = NULL ,@pTanuloId INT = NULL ,@pIsCsoportVez INT = 0 ,@pSzervezetTipusId INT = NULL AS BEGIN SET NOCOUNT ON; DECLARE @maxdate DATETIME = CONVERT(DATETIME, '2999-12-31', 120) ,@osztalyCsoportNev NVARCHAR(200) --,@elmeletiOraPercben INT = 45 -- ha kiderül, hogy valóban szükség van ezekre, akkor majd implementálni kell --,@gyakorlatiOraPercben INT = 45 -- de egyelőre be van égetve a lekérdezésbe SELECT @osztalyCsoportNev = C_NEV FROM T_OSZTALYCSOPORT WHERE ID = @pOsztalyCsoportId AND TOROLT = 'F' CREATE TABLE #TanuloCsoportok( TanuloId INT, OsztalyCsoportId INT, Belepes DATETIME, Kilepes DATETIME, IsTanoraiCelu BIT, IsOsztaly BIT, PRIMARY KEY CLUSTERED (TanuloId, OsztalyCsoportId, Belepes, Kilepes) ); INSERT INTO #TanuloCsoportok(TanuloId, OsztalyCsoportId, Belepes, Kilepes, IsTanoraiCelu, IsOsztaly) SELECT tcs.C_TANULOID AS TanuloId, tcs.C_OSZTALYCSOPORTID AS OsztalyCsoportId, tcs.C_BELEPESDATUM AS Belepes, ISNULL(tcs.C_KILEPESDATUM, @maxdate) AS Kilepes, CASE WHEN cst.C_ISTANORAICELU = 'T' THEN 1 WHEN cst.C_ISTANORAICELU IS NULL AND ocs.C_FELADATKATEGORIAID = 7553 THEN 1 ELSE 0 END AS IsTanoraiCelu, CASE WHEN cs.ID IS NULL THEN 1 ELSE 0 END AS IsOsztaly FROM ( SELECT DISTINCT tcs2.C_TANULOID, tcs2.C_OSZTALYCSOPORTID, tcs2.C_BELEPESDATUM, tcs2.C_KILEPESDATUM FROM T_TANULOCSOPORT_OSSZES tcs1 INNER JOIN T_TANULOCSOPORT_OSSZES tcs2 ON tcs2.C_INTEZMENYID = tcs1.C_INTEZMENYID AND tcs2.C_TANEVID = tcs1.C_TANEVID AND tcs2.C_TANULOID = tcs1.C_TANULOID AND tcs2.TOROLT = 'F' WHERE tcs1.TOROLT = 'F' AND tcs1.C_INTEZMENYID = @pIntezmenyId AND tcs1.C_TANEVID = @pTanevId AND tcs1.C_OSZTALYCSOPORTID = CASE WHEN @pOsztalyCsoportId IS NOT NULL AND @pTanuloId IS NULL THEN @pOsztalyCsoportId ELSE tcs1.C_OSZTALYCSOPORTID END AND tcs2.C_TANULOID = CASE WHEN @pTanuloId IS NOT NULL THEN @pTanuloId ELSE tcs2.C_TANULOID END AND ( (@pTanuloId IS NOT NULL OR tcs1.C_BELEPESDATUM <= GETDATE()) AND (@pTanuloId IS NOT NULL OR (tcs1.C_KILEPESDATUM > GETDATE() OR tcs1.C_KILEPESDATUM IS NULL)) ) ) tcs LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = tcs.C_OSZTALYCSOPORTID AND cs.TOROLT = 'F' LEFT JOIN T_CSOPORTTIPUS_OSSZES cst ON cst.ID = cs.C_TIPUSA AND cst.C_ALINTEZMENYID = cs.C_ALINTEZMENYID AND cst.C_ALTANEVID = cs.C_ALTANEVID AND cst.TOROLT = 'F' LEFT JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F' WHERE @pSzervezetTipusId IS NULL OR tcs.C_OSZTALYCSOPORTID = @pOsztalyCsoportId SELECT fh.ID AS TanuloId ,fh.C_NYOMTATASINEV AS TanuloNev ,fh.C_SZULETESIDATUM AS SzuletesiIdo ,fh.C_ANYJANEVE AS AnyjaNeve ,@osztalyCsoportNev AS OsztCsopNev ,@pOsztalyCsoportId AS OsztalyCsoportId ,ISNULL(x.[Potlas], 0) AS Potlas ,ISNULL(x.[Szabadsag], 0) AS Szabadsag ,ISNULL(x.[Tappenz], 0) AS Tappenz ,ISNULL(x.[BetegSzabadsag], 0) AS BetegSzabadsag ,ISNULL(x.[hianyzasIgazolandoTanorai], 0) AS TanoraiHianyzasIgazolando ,ISNULL(x.[hianyzasIgazolandoTanoranKivuli], 0) AS TanoranKivuliHianyzasIgazolando ,ISNULL(x.[hianyzasIgazoltTanorai], 0) AS TanoraiHianyzasIgazolt ,ISNULL(x.[hianyzasIgazoltTanoranKivuli], 0) AS TanoranKivuliHianyzasIgazolt ,ISNULL(x.[hianyzasIgazolatlanTanorai], 0) AS TanoraiHianyzasIgazolatlan ,ISNULL(x.[hianyzasIgazolatlanTanoranKivuli], 0) AS TanoranKivuliHianyzasIgazolatlan ,ISNULL(x.[kesesIgazolandoTanorai], 0) AS TanoraiKesesDarabszamIgazolando ,ISNULL(x.[kesesIgazoltTanorai], 0) AS TanoraiKesesDarabszamIgazolt ,ISNULL(x.[kesesIgazolatlanTanorai], 0) AS TanoraiKesesDarabszamIgazolatlan ,ISNULL(x.[kesesIgazolandoTanoraiPerc], 0) AS TanoraiKesesIgazolandoPerc ,ISNULL(x.[kesesIgazoltTanoraiPerc], 0) AS TanoraiKesesIgazoltPerc ,ISNULL(x.[kesesIgazolatlanTanoraiPerc], 0) AS TanoraiKesesIgazolatlanPerc ,ISNULL(x.[kesesIgazolandoTanoraiPluszOra], 0) AS SzamitottKesesIgazolando ,ISNULL(x.[kesesIgazoltTanoraiPluszOra], 0) AS SzamitottKesesIgazolt ,ISNULL(x.[kesesIgazolatlanTanoraiPluszOra], 0) AS SzamitottKesesIgazolatlan FROM T_FELHASZNALO_OSSZES fh LEFT JOIN ( SELECT m.C_ORATANULOIID as TanuloId, -- Mulasztások SUM(CASE WHEN m.C_TIPUS = 9114 THEN 1 ELSE 0 END) as [Potlas], SUM(CASE WHEN m.C_TIPUS = 9084 THEN 1 ELSE 0 END) as [Szabadsag], SUM(CASE WHEN m.C_TIPUS = 9112 THEN 1 ELSE 0 END) as [Tappenz], SUM(CASE WHEN m.C_TIPUS = 9113 THEN 1 ELSE 0 END) as [BetegSzabadsag], SUM(CASE WHEN m.C_TIPUS = 1500 and m.C_IGAZOLT IS NULL and cs.IsTanoraiCelu = 1 THEN 1 ELSE 0 END) as [hianyzasIgazolandoTanorai], SUM(CASE WHEN m.C_TIPUS = 1500 and m.C_IGAZOLT IS NULL and cs.IsTanoraiCelu = 0 THEN 1 ELSE 0 END) as [hianyzasIgazolandoTanoranKivuli], SUM(CASE WHEN m.C_TIPUS = 1500 and m.C_IGAZOLT = 'T' and cs.IsTanoraiCelu = 1 THEN 1 ELSE 0 END) as [hianyzasIgazoltTanorai], SUM(CASE WHEN m.C_TIPUS = 1500 and m.C_IGAZOLT = 'T' and cs.IsTanoraiCelu = 0 THEN 1 ELSE 0 END) as [hianyzasIgazoltTanoranKivuli], SUM(CASE WHEN m.C_TIPUS = 1500 and m.C_IGAZOLT = 'F' and cs.IsTanoraiCelu = 1 THEN 1 ELSE 0 END) as [hianyzasIgazolatlanTanorai], SUM(CASE WHEN m.C_TIPUS = 1500 and m.C_IGAZOLT = 'F' and cs.IsTanoraiCelu = 0 THEN 1 ELSE 0 END) as [hianyzasIgazolatlanTanoranKivuli], SUM(CASE WHEN m.C_TIPUS = 1499 and m.C_IGAZOLT IS NULL and cs.IsTanoraiCelu = 1 THEN 1 ELSE 0 END) as [kesesIgazolandoTanorai], SUM(CASE WHEN m.C_TIPUS = 1499 and m.C_IGAZOLT = 'T' and cs.IsTanoraiCelu = 1 THEN 1 ELSE 0 END) as [kesesIgazoltTanorai], SUM(CASE WHEN m.C_TIPUS = 1499 and m.C_IGAZOLT = 'F' and cs.IsTanoraiCelu = 1 THEN 1 ELSE 0 END) as [kesesIgazolatlanTanorai], SUM(CASE WHEN m.C_TIPUS = 1499 and m.C_IGAZOLT IS NULL and cs.IsTanoraiCelu = 0 THEN 1 ELSE 0 END) as [kesesIgazolandoTanoranKivuli], SUM(CASE WHEN m.C_TIPUS = 1499 and m.C_IGAZOLT = 'T' and cs.IsTanoraiCelu = 0 THEN 1 ELSE 0 END) as [kesesIgazoltTanoranKivuli], SUM(CASE WHEN m.C_TIPUS = 1499 and m.C_IGAZOLT = 'F' and cs.IsTanoraiCelu = 0 THEN 1 ELSE 0 END) as [kesesIgazolatlanTanoranKivuli], -- Késések percekben SUM(CASE WHEN m.C_TIPUS = 1499 and m.C_IGAZOLT IS NULL and cs.IsTanoraiCelu = 1 THEN m.C_KESESPERCBEN ELSE 0 END) as [kesesIgazolandoTanoraiPerc], SUM(CASE WHEN m.C_TIPUS = 1499 and m.C_IGAZOLT = 'T' and cs.IsTanoraiCelu = 1 THEN m.C_KESESPERCBEN ELSE 0 END) as [kesesIgazoltTanoraiPerc], SUM(CASE WHEN m.C_TIPUS = 1499 and m.C_IGAZOLT = 'F' and cs.IsTanoraiCelu = 1 THEN m.C_KESESPERCBEN ELSE 0 END) as [kesesIgazolatlanTanoraiPerc], -- Késések órákban SUM(CASE WHEN m.C_TIPUS = 1499 and m.C_IGAZOLT IS NULL and cs.IsTanoraiCelu = 1 THEN m.C_KESESPERCBEN ELSE 0 END) / 45 as [kesesIgazolandoTanoraiPluszOra], SUM(CASE WHEN m.C_TIPUS = 1499 and m.C_IGAZOLT = 'T' and cs.IsTanoraiCelu = 1 THEN m.C_KESESPERCBEN ELSE 0 END) / 45 as [kesesIgazoltTanoraiPluszOra], SUM(CASE WHEN m.C_TIPUS = 1499 and m.C_IGAZOLT = 'F' and cs.IsTanoraiCelu = 1 THEN m.C_KESESPERCBEN ELSE 0 END) / 45 as [kesesIgazolatlanTanoraiPluszOra] FROM T_TANULOMULASZTAS_OSSZES m INNER JOIN T_TANITASIORA_OSSZES tn ON tn.ID = m.C_TANITASIORAKID INNER JOIN #TanuloCsoportok cs ON cs.OsztalyCsoportId = tn.C_OSZTALYCSOPORTID AND cs.TanuloId = m.C_ORATANULOIID AND cs.Belepes <= tn.C_DATUM AND cs.Kilepes > tn.C_DATUM --LEFT JOIN T_TANTARGY t ON t.ID = tn.C_TANTARGYID -- amíg az órák hossza konstans 45 perc, addig erre nincs szükség WHERE m.C_INTEZMENYID = @pIntezmenyId AND m.C_TANEVID = @pTanevId AND m.TOROLT = 'F' AND m.C_TIPUS <> 1817 AND tn.C_OSZTALYCSOPORTID = CASE WHEN @pIsCsoportVez = 1 THEN @pOsztalyCsoportId ELSE tn.C_OSZTALYCSOPORTID END AND EXISTS(SELECT * FROM #TanuloCsoportok tcs1 WHERE tcs1.TanuloId = m.C_ORATANULOIID AND tcs1.OsztalyCsoportId = @pOsztalyCsoportId AND tn.C_DATUM >= tcs1.Belepes AND tn.C_DATUM < tcs1.Kilepes) GROUP BY m.C_ORATANULOIID ) x ON x.TanuloId = fh.ID WHERE EXISTS(SELECT * FROM #TanuloCsoportok tcs2 where tcs2.TanuloId = fh.ID) END GO