DROP PROCEDURE IF EXISTS sp_GetDokumentumTanuloNaploSorszam GO CREATE PROCEDURE sp_GetDokumentumTanuloNaploSorszam @osztalyId int AS BEGIN SET NOCOUNT ON; DECLARE @students TABLE (ID INT, NaploSorszam INT, Rendez INT) INSERT INTO @students SELECT DISTINCT C_TANULOID , tanugy.C_NAPLOSORSZAM , IIF(MONTH(MIN(C_BELEPESDATUM)) BETWEEN 9 AND 10, 1, 2) FROM T_TANULOCSOPORT_OSSZES tcs INNER JOIN T_TANULO_OSSZES t on t.id=tcs.C_TANULOID INNER JOIN T_TANULOTANUGYIADATOK tanugy ON tanugy.C_TANULOCSOPORTID = tcs.ID AND tanugy.TOROLT = 'F' WHERE C_OSZTALYCSOPORTID = @osztalyId AND tcs.TOROLT = 'F' GROUP BY C_TANULOID, tanugy.C_NAPLOSORSZAM DECLARE @max INT = (SELECT MAX(NaploSorszam) FROM @students) SELECT s.ID Tanulo , ISNULL(NaploSorszam, ISNULL(@max, 0) + ROW_NUMBER() OVER (partition by NaploSorszam ORDER BY Rendez, C_NYOMTATASINEV)) Sorszam FROM @students s INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID=s.ID GROUP BY s.Id, NaploSorszam, C_NYOMTATASINEV, Rendez ORDER BY Sorszam END GO