﻿-- =============================================
-- 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