133 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP PROCEDURE IF EXISTS dbo.sp_GetMulasztasokNaploNezetData
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE dbo.sp_GetMulasztasokNaploNezetData
 | 
						|
   @pOsztalyCsoportId int
 | 
						|
  ,@pDatum date
 | 
						|
  ,@pCsoportTipusTanoraiCeluId int
 | 
						|
  ,@pIsCsoportVez int = 0
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
 | 
						|
  CREATE TABLE #TempTable(
 | 
						|
    TanitasiOraId INT NOT NULL,
 | 
						|
    OsztalyCsoportId INT NOT NULL,
 | 
						|
    OsztalyCsoportNev NVARCHAR(255) NOT NULL,
 | 
						|
    OsztalyNev NVARCHAR(255) NOT NULL,
 | 
						|
    IsOsztalyOraja BIT NOT NULL,
 | 
						|
    IsTanoraiCelu BIT NOT NULL,
 | 
						|
    IsTanoraiCelunakJelolt BIT NOT NULL,
 | 
						|
    TantargyId INT NOT NULL,
 | 
						|
    TantargyNev NVARCHAR(255) NOT NULL,
 | 
						|
    TanarId INT NOT NULL,
 | 
						|
    TanarNev NVARCHAR(255) NOT NULL,
 | 
						|
    OraSorszam INT NULL,
 | 
						|
    OraKezdete DATETIME NULL
 | 
						|
  );
 | 
						|
 | 
						|
  DECLARE @sql nvarchar(max) = ''
 | 
						|
 | 
						|
  SET @sql += N'
 | 
						|
  SELECT
 | 
						|
     tn.ID AS TanitasiOraId
 | 
						|
    ,ocs.ID AS OsztalyCsoportId
 | 
						|
    ,ocs.C_NEV AS OsztalyCsoportNev
 | 
						|
    ,o.C_NEV AS OsztalyNev
 | 
						|
    ,IIF(ocs.ID = @pOsztalyCsoportId, 1, 0) AS IsOsztalyOraja
 | 
						|
    ,IIF(cst.ID = @pCsoportTipusTanoraiCeluId, 1, 0) AS IsTanoraiCelu
 | 
						|
    ,IIF(cst.C_ISTANORAICELU = ''T'', 1, 0) AS IsTanoraiCelunakJelolt
 | 
						|
    ,tt.ID AS TantargyId
 | 
						|
    ,tt.C_NEV AS TantargyNev
 | 
						|
    ,fa.ID AS TanarId
 | 
						|
    ,fa.C_NYOMTATASINEV AS TanarNev
 | 
						|
    ,IIF(tn.C_CSENGETESIRENDORAID IS NOT NULL, tn.C_ORASZAM, NULL) AS OraSorszam
 | 
						|
    ,IIF(tn.C_CSENGETESIRENDORAID IS NULL, tn.C_ORAKEZDETE, NULL) AS OraKezdete
 | 
						|
  FROM T_TANITASIORA tn
 | 
						|
    ' + IIF(@pIsCsoportVez = 0, N' INNER JOIN dbo.fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyCsoportId, @pDatum, @pDatum) kocs ON kocs.ID = tn.C_OSZTALYCSOPORTID ', '')
 | 
						|
  SET @sql += N'
 | 
						|
    INNER JOIN T_TANTARGY tt ON tt.ID = tn.C_TANTARGYID AND tt.TOROLT = ''F''
 | 
						|
    INNER JOIN T_FELHASZNALO fa ON fa.ID = tn.C_ORATULAJDONOSID AND fa.TOROLT = ''F''
 | 
						|
    INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID = tn.C_OSZTALYCSOPORTID AND ocs.TOROLT = ''F''
 | 
						|
    LEFT JOIN T_CSOPORT cs ON cs.ID = tn.C_OSZTALYCSOPORTID AND cs.TOROLT = ''F''
 | 
						|
    LEFT JOIN T_CSOPORTTIPUS cst ON cst.ID = cs.C_TIPUSA AND cst.TOROLT = ''F''
 | 
						|
    INNER JOIN T_OSZTALYCSOPORT o ON o.ID = @pOsztalyCsoportId AND o.TOROLT = ''F''
 | 
						|
    INNER JOIN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyCsoportId, @pDatum, @pDatum)) f on f.ID = tn.C_OSZTALYCSOPORTID
 | 
						|
  WHERE tn.C_DATUM = @pDatum
 | 
						|
    AND tn.C_MEGTARTOTT = ''T''
 | 
						|
    AND tn.TOROLT = ''F''
 | 
						|
    ' + IIF(@pIsCsoportVez = 1, N' AND tn.C_OSZTALYCSOPORTID = @pOsztalyCsoportId ','')
 | 
						|
   
 | 
						|
   INSERT INTO #TempTable
 | 
						|
   EXEC sp_executesql @sql, N'
 | 
						|
     @pOsztalyCsoportId INT
 | 
						|
    ,@pDatum DATE
 | 
						|
    ,@pCsoportTipusTanoraiCeluId INT
 | 
						|
    ,@pIsCsoportVez INT'
 | 
						|
    ,@pOsztalyCsoportId = @pOsztalyCsoportId
 | 
						|
    ,@pDatum = @pDatum
 | 
						|
    ,@pCsoportTipusTanoraiCeluId = @pCsoportTipusTanoraiCeluId
 | 
						|
    ,@pIsCsoportVez = @pIsCsoportVez
 | 
						|
 | 
						|
  SELECT
 | 
						|
     tcs.C_TANULOID AS TanuloId
 | 
						|
    ,ft.C_NYOMTATASINEV AS TanuloNev
 | 
						|
    ,ft.C_ANYJANEVE AS AnyjaNeve
 | 
						|
    ,ft.C_SZULETESIDATUM AS SzuletesiIdo
 | 
						|
    ,tbl.OsztalyCsoportId
 | 
						|
    ,tbl.OsztalyCsoportNev
 | 
						|
    ,tbl.OsztalyNev
 | 
						|
    ,tbl.IsOsztalyOraja
 | 
						|
    ,tbl.IsTanoraiCelu
 | 
						|
    ,tbl.IsTanoraiCelunakJelolt
 | 
						|
    ,tbl.TantargyId
 | 
						|
    ,tbl.TantargyNev
 | 
						|
    ,tbl.TanarId
 | 
						|
    ,tbl.TanarNev
 | 
						|
    ,tbl.OraSorszam
 | 
						|
    ,tbl.OraKezdete
 | 
						|
    ,tbl.TanitasiOraId
 | 
						|
    ,tm.ID AS MulasztasId
 | 
						|
    ,tm.C_TIPUS AS MulasztasTipus
 | 
						|
    ,tm.C_IGAZOLT AS IsIgazolt
 | 
						|
    ,tm.C_IGAZOLASTIPUSA AS IgazolasTipus
 | 
						|
    ,tm.C_MEGJEGYZES AS Megjegyzes
 | 
						|
    ,tm.C_KESESPERCBEN AS KesesPercben
 | 
						|
  FROM (
 | 
						|
    SELECT
 | 
						|
       C_TANULOID
 | 
						|
      ,C_OSZTALYCSOPORTID
 | 
						|
    FROM T_TANULOCSOPORT
 | 
						|
    WHERE C_OSZTALYCSOPORTID = @pOsztalyCsoportId
 | 
						|
      AND C_BELEPESDATUM <= @pDatum
 | 
						|
      AND (C_KILEPESDATUM > @pDatum OR C_KILEPESDATUM IS NULL)
 | 
						|
      AND TOROLT = 'F'
 | 
						|
      AND C_TANULOID IN (
 | 
						|
        SELECT
 | 
						|
          C_TANULOID
 | 
						|
        FROM T_TANULOCSOPORT
 | 
						|
        WHERE T_TANULOCSOPORT.C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #TempTable)
 | 
						|
          AND T_TANULOCSOPORT.C_BELEPESDATUM <= @pDatum
 | 
						|
          AND (T_TANULOCSOPORT.C_KILEPESDATUM > @pDatum OR T_TANULOCSOPORT.C_KILEPESDATUM IS NULL)
 | 
						|
      )
 | 
						|
   ) tcs
 | 
						|
    CROSS JOIN #TempTable tbl
 | 
						|
    INNER JOIN T_FELHASZNALO ft ON tcs.C_TANULOID = ft.ID
 | 
						|
      AND ft.TOROLT = 'F'
 | 
						|
    LEFT JOIN T_TANULOMULASZTAS tm ON tcs.C_TANULOID = tm.C_ORATANULOIID
 | 
						|
      AND tm.C_TANITASIORAKID = tbl.TanitasiOraId
 | 
						|
      AND tm.TOROLT = 'F'
 | 
						|
  WHERE
 | 
						|
    tcs.C_TANULOID IN (
 | 
						|
      SELECT 
 | 
						|
        C_TANULOID
 | 
						|
      FROM T_TANULOCSOPORT
 | 
						|
      WHERE tbl.OsztalyCsoportId = T_TANULOCSOPORT.C_OSZTALYCSOPORTID
 | 
						|
        AND T_TANULOCSOPORT.C_BELEPESDATUM <= @pDatum
 | 
						|
        AND (T_TANULOCSOPORT.C_KILEPESDATUM > @pDatum OR T_TANULOCSOPORT.C_KILEPESDATUM IS NULL)
 | 
						|
      )
 | 
						|
      AND (tm.C_TIPUS IS NULL OR tm.C_TIPUS <> 1817)
 | 
						|
  ORDER BY ft.C_NYOMTATASINEV
 | 
						|
END
 | 
						|
GO
 | 
						|
 |