-- ============================================= -- Author: Dőrr Tamás -- Create date: 2017.02.24. -- Description: -- ============================================= DROP PROCEDURE IF EXISTS sp_GetElozoOranHianyzottTanulok GO CREATE PROCEDURE [sp_GetElozoOranHianyzottTanulok] @OsztalyCsoportId int ,@Datum datetime ,@OraKezdete datetime ,@HianyzasTipus int AS BEGIN SET NOCOUNT ON; CREATE TABLE #osztalytanuloi (TanuloId int) INSERT INTO #osztalytanuloi (TanuloId) SELECT C_TANULOID FROM T_TANULOCSOPORT WHERE C_OSZTALYCSOPORTID = @OsztalyCsoportId AND @Datum BETWEEN C_BELEPESDATUM AND ISNULL(C_KILEPESDATUM, GETDATE()) AND TOROLT = 'F' CREATE TABLE #temp ( TanuloId int ,Tipus int ,Orakezdete datetime ) INSERT INTO #temp (TanuloId, Tipus, Orakezdete) SELECT ot.TanuloId as TanuloId ,tm.C_TIPUS as Tipus ,t.C_ORAKEZDETE AS Orakezdete FROM [fnGetKapcsolodoOsztalycsoportok] (@OsztalyCsoportId) ocs INNER JOIN T_TANITASIORA t ON t.TOROLT = 'F' AND ocs.ID = t.C_OSZTALYCSOPORTID AND t.C_DATUM = @Datum AND t.C_ORAKEZDETE <= @OraKezdete LEFT JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = t.C_OSZTALYCSOPORTID AND tcs.TOROLT = 'F' LEFT JOIN T_TANULOMULASZTAS tm ON tm.TOROLT = 'F' AND tm.C_TANITASIORAKID = t.ID AND tm.C_TIPUS = @HianyzasTipus AND tcs.C_TANULOID = tm.C_ORATANULOIID INNER JOIN #osztalytanuloi ot ON ot.TanuloId = tcs.C_TANULOID SELECT sub.TanuloId FROM #osztalytanuloi ot OUTER APPLY (SELECT TOP(1) * FROM #temp t WHERE ot.TanuloId = t.TanuloId ORDER BY Orakezdete DESC) sub WHERE Tipus = @HianyzasTipus END GO