50 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
-- =============================================
 | 
						|
-- 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 |