109 lines
4.2 KiB
Transact-SQL
109 lines
4.2 KiB
Transact-SQL
DROP PROCEDURE IF EXISTS uspGetHianyzokEsJelenlevokSzama
|
|
GO
|
|
|
|
CREATE PROCEDURE uspGetHianyzokEsJelenlevokSzama
|
|
@pTanevId INT
|
|
,@pMinOraszam INT
|
|
AS
|
|
|
|
BEGIN
|
|
SET NOCOUNT ON
|
|
CREATE TABLE #NaptariNap (
|
|
Datum datetime
|
|
,OsztalyId int
|
|
,IsTanitasiNap char(1)
|
|
,Nap int
|
|
,Honap nvarchar(20)
|
|
,PRIMARY KEY (Datum, OsztalyId)
|
|
)
|
|
DECLARE @DateFrom datetime, @DateTo datetime
|
|
|
|
SELECT @DateFrom = tv.C_KEZDONAP, @DateTo = tv.C_UTOLSOTANITASINAP FROM T_TANEV_OSSZES tv WHERE ID = @pTanevId
|
|
|
|
INSERT INTO #NaptariNap
|
|
SELECT
|
|
tr.Datum
|
|
,tr.OsztalyId
|
|
,ISNULL(tro.IsTanitasiNap, tr.IsTanitasiNap) AS IsTanitasiNap
|
|
,tr.Nap
|
|
,tr.Honap
|
|
FROM (
|
|
SELECT
|
|
nn.C_NAPDATUMA AS Datum
|
|
,o.ID AS OsztalyId
|
|
,IIF(nt.C_ISTANORAI = 'F' AND nt.C_ISTANORANKIVULI = 'F', 'F', 'T') AS IsTanitasiNap
|
|
,DAY(C_NAPDATUMA) AS Nap
|
|
,FORMAT(nn.C_NAPDATUMA, 'MMMM', 'HU-hu') as Honap
|
|
FROM T_NAPTARINAP_OSSZES nn
|
|
INNER JOIN T_OSZTALY_OSSZES o ON o.TOROLT = 'F' AND o.C_ALTANEVID = @pTanevId
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID AND ocs.C_FELADATKATEGORIAID = 7553 /*OktNevelesiKategoriaEnum.Alapkepzes*/
|
|
INNER JOIN T_NAPTIPUS_OSSZES nt ON nt.ID = nn.C_NAPTIPUSA AND nt.C_ALTANEVID = nn.C_TANEVID AND nn.C_INTEZMENYID = nt.C_ALINTEZMENYID AND nt.TOROLT = 'F'
|
|
WHERE nn.C_NAPDATUMA BETWEEN @DateFrom AND @DateTo AND nn.C_TANEVID = @pTanevId
|
|
AND nn.TOROLT = 'F'
|
|
) tr
|
|
LEFT JOIN (
|
|
SELECT
|
|
nn.C_NAPDATUMA AS Datum
|
|
,o.ID AS OsztalyId
|
|
,IIF(nt.C_ISTANORAI = 'F' AND nt.C_ISTANORANKIVULI = 'F', 'F', 'T') AS IsTanitasiNap
|
|
FROM T_NAPTARINAP_OSSZES nn
|
|
INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND tr.C_OSSZESCSOPORTRAVONATKOZIK = 'F' AND tr.TOROLT = 'F'
|
|
INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON ocstr.C_TANEVRENDJEID = tr.ID
|
|
INNER JOIN T_OSZTALY_OSSZES o ON ocstr.C_OSZTALYCSOPORTID = o.ID
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID AND ocs.C_FELADATKATEGORIAID = 7553 /*OktNevelesiKategoriaEnum.Alapkepzes*/
|
|
INNER JOIN T_NAPTIPUS_OSSZES nt ON nt.ID = tr.C_NAPTIPUSA AND nt.C_ALTANEVID = tr.C_TANEVID AND nt.TOROLT = 'F'
|
|
WHERE nn.C_TANEVID = @pTanevId
|
|
AND nn.TOROLT = 'F'
|
|
) tro ON tr.Datum = tro.Datum AND tr.OsztalyId = tro.OsztalyId
|
|
|
|
SELECT
|
|
nn.Datum
|
|
,nn.Honap AS Honap
|
|
,nn.Nap
|
|
,nn.OsztalyId
|
|
,ocs.C_NEV AS OsztalyNev
|
|
,nn.IsTanitasiNap
|
|
,lsz.Letszam
|
|
,IIF(h.Hianyzas IS NULL AND IsTanitasiNap = 'T', 0, h.Hianyzas) AS Hianyzas
|
|
FROM #NaptariNap nn
|
|
LEFT JOIN (
|
|
SELECT nn.Datum, nn.OsztalyId, COUNT(1) AS Letszam
|
|
FROM #NaptariNap nn
|
|
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = nn.OsztalyId
|
|
AND nn.Datum >= tcs.C_BELEPESDATUM
|
|
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > nn.Datum)
|
|
AND tcs.C_TANEVID = @pTanevId
|
|
AND tcs.TOROLT = 'F'
|
|
WHERE nn.IsTanitasiNap = 'T'
|
|
GROUP BY nn.Datum, nn.OsztalyId
|
|
) lsz ON lsz.Datum = nn.Datum AND lsz.OsztalyId = nn.OsztalyId
|
|
LEFT JOIN (
|
|
SELECT x.C_DATUM AS Datum, tcs.C_OSZTALYCSOPORTID AS OsztalyId, SUM(CNT) AS Hianyzas
|
|
FROM (
|
|
SELECT tn.C_DATUM, mu.C_ORATANULOIID, COUNT(DISTINCT C_ORATANULOIID) AS CNT
|
|
FROM T_TANULOMULASZTAS_OSSZES mu
|
|
INNER JOIN T_TANITASIORA_OSSZES tn ON tn.ID = mu.C_TANITASIORAKID
|
|
WHERE mu.C_TIPUS = 1500
|
|
AND mu.C_TANEVID = @pTanevId
|
|
AND tn.C_TANEVID = @pTanevId
|
|
AND mu.TOROLT = 'F'
|
|
AND tn.TOROLT = 'F'
|
|
GROUP BY tn.C_DATUM, mu.C_ORATANULOIID
|
|
HAVING COUNT(1) >= @pMinOraszam
|
|
) x
|
|
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = x.C_ORATANULOIID
|
|
AND x.C_DATUM >= tcs.C_BELEPESDATUM
|
|
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > x.C_DATUM)
|
|
AND tcs.C_TANEVID = @pTanevId
|
|
AND tcs.TOROLT = 'F'
|
|
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = tcs.C_OSZTALYCSOPORTID
|
|
AND o.C_ALTANEVID = @pTanevId
|
|
AND o.TOROLT = 'F'
|
|
GROUP BY x.C_DATUM, tcs.C_OSZTALYCSOPORTID
|
|
) h ON h.Datum = nn.Datum AND h.OsztalyId = nn.OsztalyId
|
|
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = nn.OsztalyId AND ocs.C_TANEVID = @pTanevId AND ocs.TOROLT = 'F'
|
|
ORDER BY nn.Datum, nn.OsztalyId
|
|
|
|
END
|
|
GO
|
|
|