DROP PROCEDURE IF EXISTS uspGetMulasztasokSzama GO CREATE PROCEDURE uspGetMulasztasokSzama @pTanevId int ,@pTanarId int ,@pDarab int AS BEGIN SET NOCOUNT ON; DECLARE @pBelepesDatum date ,@pKilepesDatum date ,@pUtolsoTanitasDatum date SELECT @pBelepesDatum = (CASE WHEN tanev.C_AKTIV = 'T' THEN GETDATE() ELSE tanev.C_UTOLSOTANITASINAP END) ,@pKilepesDatum = (CASE WHEN tanev.C_AKTIV = 'T' THEN GETDATE() ELSE tanev.C_KEZDONAP END) ,@pUtolsoTanitasDatum = tanev.C_UTOLSOTANITASINAP FROM T_TANEV_OSSZES tanev WHERE tanev.TOROLT = 'F' AND tanev.ID = @pTanevId SELECT TOP (@pDarab) tn.C_DATUM AS MulasztasDatuma ,FORMAT(tn.C_DATUM, 'dddd','hu-HU') AS MulasztasNapja ,COUNT(tm.C_ORATANULOIID) AS MulasztasokSzama FROM T_TANITASIORA_OSSZES tn INNER JOIN T_TANULOMULASZTAS_OSSZES tm ON tm.C_TANITASIORAKID = tn.ID AND tm.TOROLT = 'F' AND tm.C_TANEVID = tn.C_TANEVID INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = tm.C_ORATANULOIID AND tcs.TOROLT = 'F' AND tcs.C_TANEVID = tn.C_TANEVID AND tcs.C_BELEPESDATUM <= @pBelepesDatum AND (tcs.C_KILEPESDATUM > @pKilepesDatum OR tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @pUtolsoTanitasDatum) LEFT JOIN T_OSZTALY_OSSZES o ON o.ID = tcs.C_OSZTALYCSOPORTID AND o.TOROLT = 'F' AND o.C_ALTANEVID = tn.C_TANEVID AND (o.C_OSZTALYFONOKID = @pTanarId OR o.C_OFOHELYETTESID = @pTanarId) LEFT JOIN T_CSOPORT_OSSZES cs ON cs.ID = tcs.C_OSZTALYCSOPORTID AND cs.TOROLT = 'F' AND cs.C_ALTANEVID = tn.C_TANEVID AND cs.C_CSOPORTVEZETOID = @pTanarId WHERE tn.TOROLT = 'F' AND tn.C_TANEVID = @pTanevId AND COALESCE(o.ID, cs.ID) IS NOT NULL GROUP BY tn.C_DATUM ORDER BY tn.C_DATUM DESC END GO