178 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			178 lines
		
	
	
		
			5.1 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
IF OBJECT_ID('dbo.uspGetOsztalycsoportTantargyiMulasztasai') IS NOT NULL BEGIN
 | 
						|
  DROP PROCEDURE dbo.uspGetOsztalycsoportTantargyiMulasztasai
 | 
						|
END
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE dbo.uspGetOsztalycsoportTantargyiMulasztasai 
 | 
						|
   @pOsztalyId int
 | 
						|
  ,@pTantargyId int
 | 
						|
  ,@pTanevid int
 | 
						|
  ,@pIntezmenyId int
 | 
						|
  ,@pCsakMegtartott bit /*0 - nem, 1 - igen */
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
  SET NOCOUNT ON;
 | 
						|
  
 | 
						|
  DECLARE @createTmpTable bit = 0;
 | 
						|
 | 
						|
  IF OBJECT_ID('tempdb..#OsztalyTanuloi') IS NOT NULL BEGIN
 | 
						|
    DROP TABLE #OsztalyTanuloi
 | 
						|
  END 
 | 
						|
  CREATE TABLE #OsztalyTanuloi (
 | 
						|
     TanuloId int PRIMARY KEY
 | 
						|
    ,Belepes datetime
 | 
						|
    ,Kilepes datetime
 | 
						|
    --,CONSTRAINT PK_OsztalyTanuloi PRIMARY KEY (TanuloId)
 | 
						|
  )
 | 
						|
 | 
						|
  INSERT INTO #OsztalyTanuloi (TanuloId/*, Belepes, Kilepes*/)
 | 
						|
  SELECT DISTINCT C_TANULOID--, C_BELEPESDATUM, ISNULL(C_KILEPESDATUM, '21000101') 
 | 
						|
  FROM T_TANULOCSOPORT_OSSZES 
 | 
						|
  WHERE C_OSZTALYCSOPORTID = @pOsztalyId
 | 
						|
    AND C_TANEVID = @pTanevId
 | 
						|
    AND TOROLT = 'F'
 | 
						|
 | 
						|
  IF OBJECT_ID('tempdb..#Result') IS NULL BEGIN
 | 
						|
	SET @createTmpTable = 1;
 | 
						|
    CREATE TABLE #Result (
 | 
						|
     TanuloId int PRIMARY KEY
 | 
						|
    ,Mulasztas int
 | 
						|
    ,MegtartottOra int
 | 
						|
    ,HatralevoOra int
 | 
						|
    --,CONSTRAINT PK_Result PRIMARY KEY (TanuloId)
 | 
						|
  )
 | 
						|
  END 
 | 
						|
 | 
						|
  INSERT INTO #Result (     
 | 
						|
     TanuloId
 | 
						|
    ,Mulasztas
 | 
						|
    ,MegtartottOra
 | 
						|
    ,HatralevoOra
 | 
						|
  ) SELECT 
 | 
						|
     ot.TanuloId
 | 
						|
    ,SUM(IIF(C_TIPUS = 1500, 1, 0)) + (SUM(IIF(C_TIPUS = 1499, C_KESESPERCBEN, 0)) / 45) AS Mulasztas
 | 
						|
    ,COUNT(DISTINCT tn.ID) AS MegtartottOra
 | 
						|
    ,NULL AS HatralevoOra
 | 
						|
  FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
    INNER JOIN #OsztalyTanuloi ot ON tcs.C_TANULOID = ot.TanuloId
 | 
						|
    INNER JOIN T_TANITASIORA_OSSZES tn 
 | 
						|
       ON tn.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID 
 | 
						|
      AND tn.C_BEJEGYZESIDEJE >= tcs.C_BELEPESDATUM 
 | 
						|
      AND tn.C_BEJEGYZESIDEJE < ISNULL(tcs.C_KILEPESDATUM, '21000101')
 | 
						|
    LEFT JOIN T_TANULOMULASZTAS_OSSZES tm 
 | 
						|
       ON tm.C_TANITASIORAKID = tn.ID 
 | 
						|
      AND tm.C_ORATANULOIID = ot.TanuloId 
 | 
						|
      AND tm.C_TIPUS BETWEEN 1499 AND 1500
 | 
						|
  WHERE tn.C_TANTARGYID = @pTantargyId
 | 
						|
  GROUP BY ot.TanuloId
 | 
						|
 | 
						|
  IF @pCsakMegtartott = 1 BEGIN
 | 
						|
	IF(@createTmpTable = 1)
 | 
						|
		BEGIN
 | 
						|
			SELECT
 | 
						|
				TanuloId
 | 
						|
				,Mulasztas
 | 
						|
				,MegtartottOra
 | 
						|
				,HatralevoOra
 | 
						|
			FROM #Result
 | 
						|
		END
 | 
						|
  END 
 | 
						|
  ELSE BEGIN
 | 
						|
    CREATE TABLE #OrarendTable (
 | 
						|
  		 Id int
 | 
						|
      ,ORARENDIID INT
 | 
						|
      ,Datum datetime
 | 
						|
      ,Bontott char(1)
 | 
						|
      ,Hetirend int
 | 
						|
      ,HetNapja int
 | 
						|
      ,HetSorszam int
 | 
						|
      ,ErvenyessegKezdete datetime
 | 
						|
      ,ErvenyessegVege datetime
 | 
						|
      ,OraKezdete datetime
 | 
						|
      ,OraVege datetime
 | 
						|
      ,Oraszam int
 | 
						|
      ,TargyNev nvarchar(300)
 | 
						|
      ,TargyNevForMobile nvarchar(300)
 | 
						|
      ,TargykategoriaID int
 | 
						|
      ,Megtartott char(1)
 | 
						|
      ,CsengetesiRendOraID int
 | 
						|
      ,CsengetesiRendID int
 | 
						|
      ,MaxNapiOraszam int
 | 
						|
      ,OsztalyNev nvarchar(255)
 | 
						|
      ,TanevRendOsztalyCsoportId int
 | 
						|
      ,MegjelenesOka nvarchar(300)
 | 
						|
      ,TanarNev nvarchar(255)
 | 
						|
      ,TeremNev nvarchar(255)
 | 
						|
      ,OraTipus nvarchar(200)
 | 
						|
      ,Hianyzas char(1)
 | 
						|
      ,Keses char(1)
 | 
						|
      ,Ures char(1)
 | 
						|
      ,HelyettesitoTanarID int
 | 
						|
      ,HelyettesitoTanarNev nvarchar(255)
 | 
						|
      ,TanarID int
 | 
						|
      ,HelyettesitesId int
 | 
						|
      ,AdminAltalKiirt  char(1)
 | 
						|
      ,GroupId int
 | 
						|
      ,Tema nvarchar(max)
 | 
						|
      ,TantargyId int
 | 
						|
      ,OsztCsopId int
 | 
						|
	  ,INDEX IX_TanevRendOsztalyCsoportId CLUSTERED (TanevRendOsztalyCsoportId)
 | 
						|
    )
 | 
						|
    
 | 
						|
    DECLARE @idoszakKezdete datetime = GETDATE()
 | 
						|
    DECLARE @idoszakVege datetime
 | 
						|
    
 | 
						|
    SELECT @idoszakVege = C_NAPDATUMA 
 | 
						|
    FROM T_NAPTARINAP
 | 
						|
    WHERE C_NAPTIPUSA = 1395 
 | 
						|
      AND C_TANEVID = @pTanevId
 | 
						|
    
 | 
						|
  	INSERT INTO #OrarendTable (
 | 
						|
  		Id,ORARENDIID,Datum,Bontott,Hetirend,HetNapja,HetSorszam,ErvenyessegKezdete,ErvenyessegVege,OraKezdete,OraVege,Oraszam,
 | 
						|
  		TargyNev,TargyNevForMobile,TargykategoriaID,Megtartott,CsengetesiRendOraID,CsengetesiRendID,MaxNapiOraszam,OsztalyNev,TanevRendOsztalyCsoportId,
 | 
						|
  		MegjelenesOka,TanarNev,TeremNev,OraTipus,Hianyzas,Keses,Ures,HelyettesitoTanarID,HelyettesitoTanarNev,TanarID,AdminAltalKiirt,GroupId,Tema,TantargyId,OsztCsopId)
 | 
						|
  	EXEC sp_GetOrarend 
 | 
						|
       @pIntezmenyId = @pIntezmenyId
 | 
						|
      ,@pTanevId = @pTanevId
 | 
						|
      ,@pIdoszakKezdete = @idoszakKezdete
 | 
						|
      ,@pIdoszakVege = @idoszakVege 
 | 
						|
      ,@pTanarId = NULL
 | 
						|
      ,@pOsztalyCsoportId = @pOsztalyId
 | 
						|
      ,@pTanuloId = NULL
 | 
						|
      ,@pCsakOrarendiOrak = 0
 | 
						|
      ,@pIsNapirend  = 0 
 | 
						|
	
 | 
						|
	UPDATE r
 | 
						|
	SET
 | 
						|
      r.HatralevoOra = ISNULL(o.HatralevoOra, 0)
 | 
						|
    FROM #Result r
 | 
						|
    LEFT JOIN (
 | 
						|
      SELECT
 | 
						|
        ot.TanuloId, COUNT(1) AS HatralevoOra
 | 
						|
      FROM T_TANULOCSOPORT tcs 
 | 
						|
        INNER JOIN #OrarendTable oo ON tcs.C_OSZTALYCSOPORTID = oo.TanevRendOsztalyCsoportId
 | 
						|
        INNER JOIN #OsztalyTanuloi ot ON tcs.C_TANULOID = ot.TanuloId AND oo.Datum >= tcs.C_BELEPESDATUM AND oo.Datum < ISNULL(tcs.C_KILEPESDATUM, '21000101') 
 | 
						|
      WHERE oo.TantargyId = @pTantargyId
 | 
						|
      GROUP BY ot.TanuloId
 | 
						|
    ) o ON o.TanuloId = r.TanuloId
 | 
						|
 | 
						|
	IF(@createTmpTable = 1)
 | 
						|
		BEGIN
 | 
						|
			SELECT
 | 
						|
				TanuloId
 | 
						|
				,Mulasztas
 | 
						|
				,MegtartottOra
 | 
						|
				,HatralevoOra
 | 
						|
			FROM #Result
 | 
						|
		END
 | 
						|
  END 
 | 
						|
 | 
						|
  IF OBJECT_ID('tempdb..#OsztalyTanuloi') IS NOT NULL BEGIN
 | 
						|
    DROP TABLE #OsztalyTanuloi
 | 
						|
  END  
 | 
						|
  IF OBJECT_ID('tempdb..#OrarendTable') IS NOT NULL BEGIN
 | 
						|
    DROP TABLE #OrarendTable
 | 
						|
  END    
 | 
						|
  
 | 
						|
END
 | 
						|
GO |