-- ============================================= -- Author: Dőrr Tamás -- Create date: 2017.02.24. -- Description: -- ============================================= IF OBJECT_ID('sp_GetElozoOranHianyzottTanulok') IS NOT NULL BEGIN DROP PROCEDURE sp_GetElozoOranHianyzottTanulok END GO CREATE PROCEDURE [sp_GetElozoOranHianyzottTanulok] @OsztalyCsoportId int, @Datum datetime, @OraKezdete datetime, @HianyzasTipus int AS BEGIN SET NOCOUNT ON; DECLARE @tempOsztalyCsoportok TABLE (OsztalyCsoportID int PRIMARY KEY) DECLARE @tempTanulok TABLE (TanuloID int PRIMARY KEY) DECLARE @resultTanuloK TABLE (TanuloID int) INSERT INTO @tempOsztalyCsoportok (OsztalyCsoportID) SELECT DISTINCT ID FROM [fnGetKapcsolodoOsztalycsoportok] (@OsztalyCsoportId) INSERT INTO @tempTanuloK (TanuloID) SELECT DISTINCT C_ORATANULOIID FROM T_TANULOMULASZTAS tm JOIN T_TANITASIORA t ON t.ID = tm.C_TANITASIORAKID AND t.C_DATUM = @datum AND tm.C_TIPUS = @HianyzasTipus AND t.TOROLT = 'F' WHERE tm.TOROLT = 'F' AND tm.C_ORATANULOIID IN ( SELECT tcs.C_TANULOID FROM T_TANULOCSOPORT tcs WHERE tcs.C_OSZTALYCSOPORTID IN (select OsztalyCsoportID from @tempOsztalyCsoportok) AND tcs.TOROLT = 'F' AND @datum BETWEEN tcs.C_BELEPESDATUM AND ISNULL(tcs.C_KILEPESDATUM, GETDATE()) ) DECLARE @TanuloId int DECLARE MY_CURSOR CURSOR LOCAL STATIC READ_ONLY FORWARD_ONLY FOR SELECT DISTINCT TanuloID FROM @tempTanuloK OPEN MY_CURSOR FETCH NEXT FROM MY_CURSOR INTO @TanuloId WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO @resultTanuloK (TanuloID) SELECT TOP 1 tm.C_ORATANULOIID FROM T_TANITASIORA t LEFT JOIN T_TANULOMULASZTAS tm ON tm.C_TANITASIORAKID = t.ID AND tm.C_ORATANULOIID = @TanuloId AND tm.TOROLT = 'F' AND tm.C_TIPUS = @HianyzasTipus WHERE t.TOROLT = 'F' AND t.C_ORAKEZDETE <= @OraKezdete AND t.ID IN (SELECT t.ID FROM T_TANITASIORA t WHERE t.C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportID FROM @tempOsztalyCsoportok) AND C_DATUM = @datum) ORDER BY t.C_ORAKEZDETE DESC FETCH NEXT FROM MY_CURSOR INTO @TanuloId END CLOSE MY_CURSOR DEALLOCATE MY_CURSOR SELECT TanuloID FROM @resultTanuloK WHERE TanuloID IS NOT NULL END