DROP PROCEDURE IF EXISTS uspGetBukasokSzama GO CREATE PROCEDURE uspGetBukasokSzama @pTanevId int ,@pTanarId int ,@pDarab int ,@pBukasAtlag float 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) fh.C_NYOMTATASINEV AS Nev ,ocs.C_NEV AS Osztaly ,COUNT(ertekeles.C_TANTARGYID) AS TantargyakSzama FROM T_FOGLALKOZAS_OSSZES f INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON f.C_OSZTALYCSOPORTID = ocs.ID AND ocs.C_TANEVID = f.C_TANEVID AND ocs.TOROLT = 'F' INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON ocs.ID = tcs.C_OSZTALYCSOPORTID AND tcs.C_BELEPESDATUM <= @pBelepesDatum AND (tcs.C_KILEPESDATUM > @pKilepesDatum OR tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= @pUtolsoTanitasDatum) AND tcs.C_TANEVID = f.C_TANEVID AND tcs.TOROLT = 'F' INNER JOIN T_FELHASZNALO_OSSZES fh ON tcs.C_TANULOID = fh.ID AND fh.C_TANEVID = f.C_TANEVID AND fh.TOROLT = 'F' INNER JOIN ( SELECT te.C_TANULOID ,te.C_OSZTALYCSOPORTID ,te.C_TANTARGYID FROM T_TANULOERTEKELES_OSSZES te INNER JOIN T_OSZTALYZATTIPUS_OSSZES ot ON te.C_ERTEKELESOSZTALYZATID = ot.ID AND ot.C_ALTANEVID = te.C_TANEVID AND ot.TOROLT = 'F' INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON ot.ID = d.ID AND d.C_TANEVID = te.C_TANEVID AND d.TOROLT = 'F' LEFT JOIN T_ERTEKELESMOD_OSSZES em ON em.ID = te.C_ERTEKELESMODID AND em.C_ALTANEVID = te.C_TANEVID AND em.TOROLT = 'F' AND te.C_ERTEKELESOSZTALYZATID IS NOT NULL WHERE te.C_TANEVID = @pTanevId AND te.TOROLT = 'F' GROUP BY te.C_TANULOID ,te.C_OSZTALYCSOPORTID ,te.C_TANTARGYID HAVING ROUND(SUM(CAST(d.C_VALUE AS float) * CAST(ISNULL(em.C_SULY, 100) AS float) / 100) / SUM(CAST(ISNULL(em.C_SULY, 100) AS float) / 100), 2) < @pBukasAtlag ) ertekeles ON ertekeles.C_TANULOID = fh.ID AND ertekeles.C_OSZTALYCSOPORTID = f.C_OSZTALYCSOPORTID AND ertekeles.C_TANTARGYID = f.C_TANTARGYID WHERE f.C_TANEVID = @pTanevId AND f.TOROLT = 'F' AND f.C_TANARID = @pTanarId GROUP BY fh.C_NYOMTATASINEV ,ocs.C_NEV ORDER BY fh.C_NYOMTATASINEV ,ocs.C_NEV END GO