-- ============================================= -- 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 ( SELECT tcs2.C_OSZTALYCSOPORTID AS ID ,tcs2.C_TANULOID FROM T_TANULOCSOPORT_OSSZES tcs INNER JOIN T_TANULOCSOPORT_OSSZES tcs2 ON tcs2.C_TANULOID = tcs.C_TANULOID INNER JOIN T_TANEV_OSSZES tanev ON tanev.ID = tcs.C_TANEVID AND tanev.TOROLT = 'F' WHERE tcs.C_OSZTALYCSOPORTID = @OsztalyCsoportId AND tcs.C_BELEPESDATUM <= GETDATE() AND (tcs.C_KILEPESDATUM > GETDATE() OR tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM >= tanev.C_UTOLSOTANITASINAP) AND tcs2.C_BELEPESDATUM <= GETDATE() AND (tcs2.C_KILEPESDATUM > GETDATE() OR tcs2.C_KILEPESDATUM IS NULL OR tcs2.C_KILEPESDATUM >= tanev.C_UTOLSOTANITASINAP) AND tcs.TOROLT = 'F' AND tcs2.TOROLT = 'F') 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_TANULOMULASZTAS tm ON tm.TOROLT = 'F' AND tm.C_TANITASIORAKID = tn.ID AND tm.C_TIPUS = @HianyzasTipus AND ocs.C_TANULOID = tm.C_ORATANULOIID INNER JOIN #osztalytanuloi ot ON ot.TanuloId = ocs.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