-- ============================================= -- Author: Dőrr Tamás -- Create date: 2017.02.24. -- Description: Visszaadja, hogy megy diákok hiányoztak az aktuális tanítási óra előtti órájukról -- ============================================= 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 C_BELEPESDATUM <= @Datum AND ISNULL(C_KILEPESDATUM, GETDATE()) > @Datum 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 ,tn.C_ORAKEZDETE AS Orakezdete FROM [fnGetKapcsolodoOsztalycsoportok] (@OsztalyCsoportId) ocs INNER JOIN T_TANITASIORA tn ON tn.TOROLT = 'F' AND ocs.ID = tn.C_OSZTALYCSOPORTID AND tn.C_DATUM = @Datum AND tn.C_ORAKEZDETE <= @OraKezdete LEFT JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = tn.C_OSZTALYCSOPORTID AND tcs.TOROLT = 'F' LEFT JOIN T_TANULOMULASZTAS tm ON tm.TOROLT = 'F' AND tm.C_TANITASIORAKID = tn.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