212 lines
No EOL
8.8 KiB
Transact-SQL
212 lines
No EOL
8.8 KiB
Transact-SQL
GO
|
|
|
|
SET ANSI_NULLS ON
|
|
GO
|
|
SET QUOTED_IDENTIFIER ON
|
|
GO
|
|
|
|
IF OBJECT_ID('sp_GetDokumentumMulasztasok') IS NOT NULL BEGIN
|
|
DROP PROCEDURE [sp_GetDokumentumMulasztasok]
|
|
END
|
|
GO
|
|
|
|
-- ===========================================================================
|
|
-- Description: Dokumentumokban használt mulasztás összesítő osztály alapján
|
|
-- ===========================================================================
|
|
CREATE PROCEDURE sp_GetDokumentumMulasztasok
|
|
@osztalyId INT,
|
|
@tanevId INT,
|
|
@elmeletGyakorlat BIT = 0,
|
|
@kesesTipus INT = 1499,
|
|
@elmeletiOraPercben INT = 45,
|
|
@gyakorlatiOraPercben INT = 60,
|
|
@ertekelesTipus INT,
|
|
@iskolaErdekuSzamit BIT
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @Tanulok TABLE (tanuloId INT PRIMARY KEY)
|
|
INSERT INTO @Tanulok
|
|
SELECT TanuloId FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T')
|
|
DECLARE @Idoszak INT
|
|
DECLARE @IdoszakVege DATE
|
|
SET @Idoszak = (SELECT
|
|
CASE
|
|
WHEN @ertekelesTipus = 1519 THEN 1400 --félévi
|
|
WHEN @ertekelesTipus = 1520 THEN 1395 --év végi
|
|
WHEN @ertekelesTipus = 1522 THEN 1403 --I. negyedévi
|
|
WHEN @ertekelesTipus = 1523 then 1404 --III. negyedévi
|
|
END
|
|
)
|
|
|
|
SET @IdoszakVege = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA=@Idoszak AND C_TANEVID=@tanevId AND TOROLT='F')
|
|
SELECT
|
|
t.TANULOID tanuloid
|
|
,m.Igazolt
|
|
,m.Igazolatlan
|
|
,m.ElmeletIgazolt
|
|
,m.ElmeletIgazolatlan
|
|
,m.GyakorlatiIgazolt
|
|
,m.GyakorlatiIgazolatlan
|
|
,m.Osszes
|
|
FROM @Tanulok t
|
|
LEFT JOIN (
|
|
SELECT DISTINCT
|
|
m.tanuloId
|
|
,ISNULL(m.[hianyzasIgazoltTanoraiElmeleti], 0) + ISNULL(m.[hianyzasIgazoltTanoraiGyakorlati], 0) + ISNULL(kp.kesesIgazoltElmeletiOraban,0) + ISNULL(kp.kesesIgazoltGyakorlatiOraban,0) Igazolt
|
|
,ISNULL(m.[hianyzasIgazolatlanTanoraiElmeleti], 0) + ISNULL(m.[hianyzasIgazolatlanTanoraiGyakorlati], 0) + ISNULL(kp.kesesIgazolatlanElmeletiOraban,0) + ISNULL(kp.kesesIgazolatlanGyakorlatiOraban,0) Igazolatlan
|
|
,ISNULL(m.[hianyzasIgazoltTanoraiElmeleti], 0) + ISNULL(kp.kesesIgazoltElmeletiOraban,0) ElmeletIgazolt
|
|
,ISNULL(m.[hianyzasIgazolatlanTanoraiElmeleti], 0) + ISNULL(kp.kesesIgazolatlanElmeletiOraban,0) ElmeletIgazolatlan
|
|
,ISNULL(m.[hianyzasIgazoltTanoraiGyakorlati], 0) + ISNULL(kp.kesesIgazoltGyakorlatiOraban,0) GyakorlatiIgazolt
|
|
,ISNULL(m.[hianyzasIgazolatlanTanoraiGyakorlati], 0) + ISNULL(kp.kesesIgazolatlanGyakorlatiOraban,0) GyakorlatiIgazolatlan
|
|
,ISNULL(m.[hianyzasIgazoltTanoraiElmeleti], 0) + ISNULL(m.[hianyzasIgazoltTanoraiGyakorlati], 0) + ISNULL(kp.kesesIgazoltElmeletiOraban,0) + ISNULL(kp.kesesIgazoltGyakorlatiOraban,0)+
|
|
ISNULL(m.[hianyzasIgazolatlanTanoraiElmeleti], 0) + ISNULL(m.[hianyzasIgazolatlanTanoraiGyakorlati], 0) + ISNULL(kp.kesesIgazolatlanElmeletiOraban,0) + ISNULL(kp.kesesIgazolatlanGyakorlatiOraban,0) Osszes
|
|
FROM (
|
|
SELECT
|
|
tanuloId,
|
|
[hianyzasIgazoltTanoraiElmeleti], [hianyzasIgazoltTanoraiGyakorlati],
|
|
[hianyzasIgazolatlanTanoraiElmeleti], [hianyzasIgazolatlanTanoraiGyakorlati],
|
|
[kesesIgazoltTanoraiElmeleti],[kesesIgazoltTanoraiGyakorlati],
|
|
[kesesIgazolatlanTanoraiElmeleti], [kesesIgazolatlanTanoraiGyakorlati]
|
|
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 +
|
|
CASE isGyakorlati WHEN 'T' THEN 'Gyakorlati' WHEN 'F' THEN 'Elmeleti' 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,
|
|
IIF(t.C_GYAKORLATI='T', 'T', 'F') as isGyakorlati,
|
|
COUNT(1) AS cnt
|
|
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
|
|
tn.C_DATUM <= @IdoszakVege
|
|
AND m.C_TANEVID = @tanevId
|
|
AND m.Torolt ='F'
|
|
AND m.C_ORATANULOIID IN (SELECT tanuloId FROM @Tanulok)
|
|
AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
|
|
GROUP BY m.C_ORATANULOIID, m.C_TIPUS, m.C_IGAZOLT, IIF(cs.ID IS NULL OR cs.C_TIPUSA = 1034, 'T', 'F'), t.C_GYAKORLATI
|
|
) x
|
|
) p
|
|
PIVOT (
|
|
MAX(cnt)
|
|
FOR piv IN (
|
|
[hianyzasIgazoltTanoraiElmeleti], [hianyzasIgazoltTanoraiGyakorlati],
|
|
[hianyzasIgazolatlanTanoraiElmeleti], [hianyzasIgazolatlanTanoraiGyakorlati],
|
|
[kesesIgazoltTanoraiElmeleti],[kesesIgazoltTanoraiGyakorlati],
|
|
[kesesIgazolatlanTanoraiElmeleti], [kesesIgazolatlanTanoraiGyakorlati])
|
|
) 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
|
|
tn.C_DATUM <= @IdoszakVege
|
|
AND m.C_TANEVID = @tanevId
|
|
AND m.Torolt ='F'
|
|
AND m.C_ORATANULOIID IN (SELECT tanuloId FROM @Tanulok)
|
|
AND (cs.ID IS NULL OR cs.C_TIPUSA = 1034)
|
|
AND m.C_TIPUS = 1499
|
|
AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
|
|
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
|
|
,SUM(kesesIgazolandoTanoraiPluszOra) kesesIgazolandoTanoraiPluszOra
|
|
,SUM(kesesIgazoltTanoraiPluszOra) kesesIgazoltTanoraiPluszOra
|
|
,SUM(kesesIgazolatlanTanoraiPluszOra) kesesIgazolatlanTanoraiPluszOra
|
|
,SUM(kesesIgazoltElmeletiOraban) kesesIgazoltElmeletiOraban
|
|
,SUM(kesesIgazolatlanElmeletiOraban) kesesIgazolatlanElmeletiOraban
|
|
,SUM(kesesIgazoltGyakorlatiOraban) kesesIgazoltGyakorlatiOraban
|
|
,SUM(kesesIgazolatlanGyakorlatiOraban) kesesIgazolatlanGyakorlatiOraban
|
|
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
|
|
,kesesIgazoltElmeletiOraban
|
|
,kesesIgazolatlanElmeletiOraban
|
|
,kesesIgazoltGyakorlatiOraban
|
|
,kesesIgazolatlanGyakorlatiOraban
|
|
FROM (
|
|
SELECT
|
|
xx.tanuloId
|
|
,xx.isIgazolt
|
|
,SUM(xx.keses / (CASE WHEN isGyakorlati = 'F' THEN @elmeletiOraPercben ELSE @gyakorlatiOraPercben END)) AS kesesOraban
|
|
,SUM(CASE WHEN isGyakorlati = 'F' and isIgazolt='T' THEN xx.keses / @elmeletiOraPercben ELSE 0 END) AS kesesIgazoltElmeletiOraban
|
|
,SUM(CASE WHEN isGyakorlati = 'F' and isIgazolt='F' THEN xx.keses / @elmeletiOraPercben ELSE 0 END) AS kesesIgazolatlanElmeletiOraban
|
|
,SUM(CASE WHEN isGyakorlati = 'T' and isIgazolt='T' THEN xx.keses / @gyakorlatiOraPercben ELSE 0 END) AS kesesIgazoltGyakorlatiOraban
|
|
,SUM(CASE WHEN isGyakorlati = 'T' and isIgazolt='F' THEN xx.keses / @gyakorlatiOraPercben ELSE 0 END) AS kesesIgazolatlanGyakorlatiOraban
|
|
FROM (
|
|
SELECT
|
|
m.C_ORATANULOIID AS tanuloId
|
|
,m.C_IGAZOLT isIgazolt
|
|
,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_TANEVID = @tanevId
|
|
AND m.C_ORATANULOIID IN (SELECT tanuloId FROM @Tanulok)
|
|
AND (cs.ID IS NULL OR cs.C_TIPUSA = 1034)
|
|
AND m.C_TIPUS = 1499
|
|
AND m.TOROLT = 'F'
|
|
AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
|
|
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
|
|
GROUP BY tanuloId
|
|
) kp ON m.tanuloId = kp.tanuloId
|
|
) m on m.tanuloId=t.tanuloId
|
|
|
|
END
|
|
|
|
GO |