IF OBJECT_ID('[dbo].[sp_GetTanulokMulasztasaiKesesei]') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[sp_GetTanulokMulasztasaiKesesei] END GO CREATE PROCEDURE [dbo].[sp_GetTanulokMulasztasaiKesesei] @intezmenyId int, @tanevId int, @osztalyCsoportId int, @kesesTipus int, @elmeletiOraPercben int = 45, @gyakorlatiOraPercben int = 60 AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements. SET NOCOUNT ON; DECLARE @osztalyCsoportNev nvarchar(200) (SELECT @osztalyCsoportNev = C_NEV FROM T_OSZTALYCSOPORT WHERE ID = @osztalyCsoportId) SELECT m.tanuloId AS TanuloId ,fh.C_NYOMTATASINEV AS TanuloNev ,fh.C_SZULETESIDATUM AS SzuletesiIdo ,fh.C_ANYJANEVE AS AnyjaNeve ,@osztalyCsoportNev AS OsztCsopNev ,ISNULL(m.[hianyzasIgazolandoTanorai], 0) AS TanoraiHianyzasIgazolando ,ISNULL(m.[hianyzasIgazolandoTanoranKivuli], 0) AS TanoranKivuliHianyzasIgazolando ,ISNULL(m.[hianyzasIgazoltTanorai], 0) AS TanoraiHianyzasIgazolt ,ISNULL(m.[hianyzasIgazoltTanoranKivuli], 0) AS TanoranKivuliHianyzasIgazolt ,ISNULL(m.[hianyzasIgazolatlanTanorai], 0) AS TanoraiHianyzasIgazolatlan ,ISNULL(m.[hianyzasIgazolatlanTanoranKivuli], 0) AS TanoranKivuliHianyzasIgazolatlan ,ISNULL(m.[kesesIgazolandoTanorai], 0) AS TanoraiKesesDarabszamIgazolando ,ISNULL(m.[kesesIgazoltTanorai], 0) AS TanoraiKesesDarabszamIgazolt ,ISNULL(m.[kesesIgazolatlanTanorai], 0) AS TanoraiKesesDarabszamIgazolatlan ,ISNULL(k.[kesesIgazolandoTanoraiPerc], 0) AS TanoraiKesesIgazolandoPerc ,ISNULL(k.[kesesIgazoltTanoraiPerc], 0) AS TanoraiKesesIgazoltPerc ,ISNULL(k.[kesesIgazolatlanTanoraiPerc], 0) AS TanoraiKesesIgazolatlanPerc ,ISNULL(kp.[kesesIgazolandoTanoraiPluszOra], 0) AS SzamitottKesesIgazolando ,ISNULL(kp.[kesesIgazoltTanoraiPluszOra], 0) AS SzamitottKesesIgazolt ,ISNULL(kp.[kesesIgazolatlanTanoraiPluszOra], 0) AS SzamitottKesesIgazolatlan FROM ( SELECT tanuloId ,[hianyzasIgazolandoTanorai] ,[hianyzasIgazolandoTanoranKivuli] ,[hianyzasIgazoltTanorai] ,[hianyzasIgazoltTanoranKivuli] ,[hianyzasIgazolatlanTanorai] ,[hianyzasIgazolatlanTanoranKivuli] ,[kesesIgazolandoTanorai] ,[kesesIgazoltTanorai] ,[kesesIgazolatlanTanorai] FROM ( SELECT x.tanuloId ,CASE mulasztasTipus WHEN 1500 THEN 'Hianyzas' WHEN 1499 THEN 'Keses' END + CASE WHEN isIgazolt IS NULL THEN 'Igazolando' WHEN isIgazolt = 'T' THEN 'Igazolt' WHEN isIgazolt = 'F' THEN 'Igazolatlan' END + CASE isTanorai WHEN 'T' THEN 'Tanorai' WHEN 'F' THEN 'TanoranKivuli' END AS piv ,cnt FROM ( SELECT m.C_ORATANULOIID AS tanuloId, m.C_TIPUS mulasztasTipus, m.C_IGAZOLT isIgazolt, IIF(cs.ID IS NULL OR cs.C_TIPUSA = 1034, 'T', 'F') AS isTanorai, COUNT(1) AS cnt FROM T_TANULOMULASZTAS_OSSZES m INNER JOIN T_TANITASIORA_OSSZES tn ON tn.ID = m.C_TANITASIORAKID LEFT JOIN T_CSOPORT_OSSZES cs ON tn.C_OSZTALYCSOPORTID = cs.ID WHERE m.C_INTEZMENYID = @intezmenyId AND m.C_TANEVID = @tanevId AND m.Torolt ='F' AND EXISTS (SELECT 1 FROM T_TANULOCSOPORT_OSSZES tcs WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcs.C_TANULOID = m.C_ORATANULOIID AND tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL)) GROUP BY m.C_ORATANULOIID, m.C_TIPUS, m.C_IGAZOLT, IIF(cs.ID IS NULL OR cs.C_TIPUSA = 1034, 'T', 'F') ) x ) p PIVOT ( MAX(cnt) FOR piv IN ([hianyzasIgazolandoTanorai], [hianyzasIgazolandoTanoranKivuli], [hianyzasIgazoltTanorai], [hianyzasIgazoltTanoranKivuli], [hianyzasIgazolatlanTanorai], [hianyzasIgazolatlanTanoranKivuli], [kesesIgazolandoTanorai], [kesesIgazoltTanorai], [kesesIgazolatlanTanorai]) ) AS pvt ) m LEFT JOIN ( SELECT tanuloId ,[kesesIgazolandoTanoraiPerc] ,[kesesIgazoltTanoraiPerc] ,[kesesIgazolatlanTanoraiPerc] FROM ( SELECT x.tanuloId ,'Keses' + CASE WHEN isIgazolt IS NULL THEN 'Igazolando' WHEN isIgazolt = 'T' THEN 'Igazolt' WHEN isIgazolt = 'F' THEN 'Igazolatlan' END + 'TanoraiPerc' AS piv ,kesesPercben FROM ( SELECT m.C_ORATANULOIID AS tanuloId ,m.C_IGAZOLT isIgazolt ,SUM(m.C_KESESPERCBEN) AS kesesPercben FROM T_TANULOMULASZTAS_OSSZES m INNER JOIN T_TANITASIORA_OSSZES tn ON tn.ID = m.C_TANITASIORAKID LEFT JOIN T_CSOPORT_OSSZES cs ON tn.C_OSZTALYCSOPORTID = cs.ID WHERE m.C_INTEZMENYID = @intezmenyId AND m.C_TANEVID = @tanevId AND m.Torolt ='F' AND EXISTS (SELECT 1 FROM T_TANULOCSOPORT_OSSZES tcs WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcs.C_TANULOID = m.C_ORATANULOIID AND tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL)) AND (cs.ID IS NULL OR cs.C_TIPUSA = 1034) AND m.C_TIPUS = 1499 GROUP BY m.C_ORATANULOIID, m.C_IGAZOLT ) x ) p PIVOT ( MAX(kesesPercben) FOR piv IN ([kesesIgazolandoTanoraiPerc], [kesesIgazoltTanoraiPerc], [kesesIgazolatlanTanoraiPerc]) ) AS pvt ) k ON k.tanuloId = m.tanuloId LEFT JOIN ( SELECT tanuloId ,[kesesIgazolandoTanoraiPluszOra] ,[kesesIgazoltTanoraiPluszOra] ,[kesesIgazolatlanTanoraiPluszOra] FROM ( SELECT x.tanuloId ,'Keses' + CASE WHEN isIgazolt IS NULL THEN 'Igazolando' WHEN isIgazolt = 'T' THEN 'Igazolt' WHEN isIgazolt = 'F' THEN 'Igazolatlan' END + 'TanoraiPluszOra' AS piv ,kesesOraban FROM ( SELECT xx.tanuloId ,xx.isIgazolt ,SUM(xx.keses / (CASE WHEN isGyakorlati = 'F' THEN @elmeletiOraPercben ELSE @gyakorlatiOraPercben END)) AS kesesOraban FROM ( SELECT m.C_ORATANULOIID AS tanuloId ,m.C_IGAZOLT isIgazolt --,tn.C_FOGLALKOZASID AS foglalkozasId ,t.C_GYAKORLATI AS isGyakorlati ,SUM(m.C_KESESPERCBEN) AS keses FROM T_TANULOMULASZTAS_OSSZES m INNER JOIN T_TANITASIORA_OSSZES tn ON tn.ID = m.C_TANITASIORAKID INNER JOIN T_TANTARGY_OSSZES t ON t.ID = tn.C_TANTARGYID LEFT JOIN T_CSOPORT_OSSZES cs ON tn.C_OSZTALYCSOPORTID = cs.ID WHERE m.C_INTEZMENYID = @intezmenyId AND m.C_TANEVID = @tanevId AND EXISTS (SELECT 1 FROM T_TANULOCSOPORT_OSSZES tcs WHERE tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId AND tcs.C_TANULOID = m.C_ORATANULOIID AND tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL)) AND (cs.ID IS NULL OR cs.C_TIPUSA = 1034) AND m.C_TIPUS = 1499 AND m.TOROLT = 'F' GROUP BY m.C_ORATANULOIID, m.C_IGAZOLT/*, tn.C_FOGLALKOZASID*/, t.C_GYAKORLATI ) xx GROUP BY tanuloId, xx.isIgazolt ) x ) p PIVOT ( MAX(kesesOraban) FOR piv IN ([kesesIgazolandoTanoraiPluszOra], [kesesIgazoltTanoraiPluszOra], [kesesIgazolatlanTanoraiPluszOra]) ) AS pvt ) kp ON m.tanuloId = kp.tanuloId INNER JOIN T_FELHASZNALO fh ON fh.ID = m.tanuloId END SELECT tanuloId ,[kesesIgazolandoTanoraiPluszOra] ,[kesesIgazoltTanoraiPluszOra] ,[kesesIgazolatlanTanoraiPluszOra] FROM ( SELECT x.tanuloId ,'Keses' + CASE WHEN isIgazolt IS NULL THEN 'Igazolando' WHEN isIgazolt = 'T' THEN 'Igazolt' WHEN isIgazolt = 'F' THEN 'Igazolatlan' END + 'TanoraiPluszOra' AS piv ,kesesOraban FROM ( SELECT xx.tanuloId ,xx.isIgazolt ,SUM(xx.keses / (CASE WHEN isGyakorlati = 'F' THEN 45 ELSE 60 END)) AS kesesOraban FROM ( SELECT m.C_ORATANULOIID AS tanuloId ,m.C_IGAZOLT isIgazolt --,tn.C_FOGLALKOZASID AS foglalkozasId ,t.C_GYAKORLATI AS isGyakorlati ,SUM(m.C_KESESPERCBEN) AS keses FROM T_TANULOMULASZTAS_OSSZES m INNER JOIN T_TANITASIORA_OSSZES tn ON tn.ID = m.C_TANITASIORAKID INNER JOIN T_TANTARGY_OSSZES t ON t.ID = tn.C_TANTARGYID LEFT JOIN T_CSOPORT_OSSZES cs ON tn.C_OSZTALYCSOPORTID = cs.ID WHERE m.C_INTEZMENYID = @intezmenyId AND m.C_TANEVID = @tanevId AND EXISTS (SELECT 1 FROM T_TANULOCSOPORT_OSSZES tcs WHERE tcs.C_OSZTALYCSOPORTID = 282 AND tcs.C_TANULOID = m.C_ORATANULOIID AND tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL)) AND (cs.ID IS NULL OR cs.C_TIPUSA = 1034) AND m.C_TIPUS = 1499 AND m.TOROLT = 'F' GROUP BY m.C_ORATANULOIID, m.C_IGAZOLT, t.C_GYAKORLATI ) xx GROUP BY tanuloId, xx.isIgazolt ) x ) p PIVOT ( MAX(kesesOraban) FOR piv IN ([kesesIgazolandoTanoraiPluszOra], [kesesIgazoltTanoraiPluszOra], [kesesIgazolatlanTanoraiPluszOra]) ) AS pvt GO