609 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			609 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
DROP PROCEDURE IF EXISTS uspGetDokumentumErtekelesekIdoszakonkent
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE uspGetDokumentumErtekelesekIdoszakonkent
 | 
						|
   @tanevId int 
 | 
						|
  ,@osztalyCsoportId int 
 | 
						|
  ,@ertekelesTipusa int 
 | 
						|
  ,@csakTanorai bit 
 | 
						|
  ,@csakKivalasztottOsztalyCsoport bit
 | 
						|
  ,@atsoroltTanuloErtekelesek int
 | 
						|
  ,@fuggolegesTantargyak bit
 | 
						|
  ,@isMegjegyzesMegjelenjen bit = 1
 | 
						|
  ,@intezmenyId int
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
  SET NOCOUNT ON;
 | 
						|
  /* a #students tábla deklarálása az alábbi tároltakban történik: sp_GetOsztalynaplo, sp_GetCsoportNaplo, sp_GetUzenofuzetErtekelolap*/
 | 
						|
 | 
						|
  DECLARE @FelevVegeHonap int,
 | 
						|
      @FelevVegeNap int
 | 
						|
 | 
						|
  CREATE TABLE #magatartasSzorgalomTMP (
 | 
						|
     Tipus nvarchar(255)
 | 
						|
    ,Honap int
 | 
						|
    ,TanuloId int
 | 
						|
    ,TanuloCsoportId int
 | 
						|
    ,Ertekeles nvarchar(max)
 | 
						|
    ,Datum datetime
 | 
						|
    ,RogzitesDatum datetime
 | 
						|
  )
 | 
						|
 | 
						|
  CREATE TABLE #magatartasSzorgalom (
 | 
						|
     Honap int
 | 
						|
    ,TanuloId int
 | 
						|
    ,TanuloCsoportId int
 | 
						|
    ,Tipus nvarchar(255)
 | 
						|
    ,Ertekeles nvarchar(max)
 | 
						|
    ,RENDEZ0 int
 | 
						|
    ,RENDEZ1 int
 | 
						|
    ,RENDEZ2 nvarchar(255)
 | 
						|
    ,RENDEZ3 int
 | 
						|
    ,RENDEZ4 int
 | 
						|
    ,RENDEZ5 nvarchar(255)
 | 
						|
    ,RendezHonap int
 | 
						|
    ,Datum datetime
 | 
						|
    ,RogzitesDatum datetime
 | 
						|
  )
 | 
						|
 | 
						|
  CREATE TABLE #jegyekTMP (
 | 
						|
     Honap int
 | 
						|
    ,TanuloId int
 | 
						|
    ,TanuloCsoportId int
 | 
						|
    ,TantargyId int
 | 
						|
    ,TantargyNev nvarchar(255)
 | 
						|
    ,Ertekeles nvarchar(max)
 | 
						|
    ,RENDEZ0 int
 | 
						|
    ,RENDEZ1 int
 | 
						|
    ,RENDEZ2 nvarchar(max)
 | 
						|
    ,RENDEZ3 int
 | 
						|
    ,RENDEZ4 int
 | 
						|
    ,RENDEZ5 nvarchar(max)
 | 
						|
    ,Datum datetime
 | 
						|
    ,RogzitesDatum datetime
 | 
						|
  )
 | 
						|
 | 
						|
  CREATE TABLE #TanuloIdHonap (
 | 
						|
     ID int
 | 
						|
    ,Honap int
 | 
						|
    ,TanuloCsoportId int
 | 
						|
  )
 | 
						|
 | 
						|
  CREATE TABLE #TanuloTantargyHonapTmp (
 | 
						|
     TanuloId int
 | 
						|
    ,TanuloCsoportId int
 | 
						|
    ,Honap int
 | 
						|
    ,TantargyNev nvarchar(255)
 | 
						|
    ,TantargyId int
 | 
						|
    ,RENDEZ0 int
 | 
						|
    ,RENDEZ1 int
 | 
						|
    ,RENDEZ2 nvarchar(max)
 | 
						|
    ,RENDEZ3 int
 | 
						|
    ,RENDEZ4 int
 | 
						|
    ,RENDEZ5 nvarchar(max)
 | 
						|
  )
 | 
						|
 | 
						|
  CREATE TABLE #jegyek (
 | 
						|
     Honap int
 | 
						|
    ,TanuloId int
 | 
						|
    ,TanuloCsoportId int
 | 
						|
    ,TantargyId int
 | 
						|
    ,TantargyNev nvarchar(255)
 | 
						|
    ,Ertekeles nvarchar(max)
 | 
						|
    ,RENDEZ0 int
 | 
						|
    ,RENDEZ1 int
 | 
						|
    ,RENDEZ2 nvarchar(max)
 | 
						|
    ,RENDEZ3 int
 | 
						|
    ,RENDEZ4 int
 | 
						|
    ,RENDEZ5 nvarchar(max)
 | 
						|
    ,RendezHonap int
 | 
						|
  )
 | 
						|
 | 
						|
  SELECT 
 | 
						|
     @FelevVegeHonap = DATEPART(mm, C_DATUM)
 | 
						|
    ,@FelevVegeNap = DATEPART(dd, C_DATUM)
 | 
						|
  FROM T_TANEVRENDJE_OSSZES 
 | 
						|
  WHERE 
 | 
						|
    C_NAPTIPUSA = 1400 
 | 
						|
    AND TOROLT = 'F' 
 | 
						|
    AND C_TANEVID = @tanevid
 | 
						|
 | 
						|
  INSERT INTO #magatartasSzorgalomTMP 
 | 
						|
  SELECT 
 | 
						|
     Tipus
 | 
						|
    ,Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,Ertekeles
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM
 | 
						|
  (SELECT 
 | 
						|
    'Magatartás' Tipus
 | 
						|
    ,CASE
 | 
						|
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap THEN 13
 | 
						|
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) > @FelevVegeNap  THEN 14
 | 
						|
      ELSE 
 | 
						|
      DATEPART(mm, Datum)
 | 
						|
     END AS Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev)  
 | 
						|
    + CASE 
 | 
						|
        WHEN TipusId = 1518 THEN ''
 | 
						|
        WHEN TipusId = 1522 THEN '(I.)'
 | 
						|
        WHEN TipusId = 1523 THEN '(III.)'
 | 
						|
        WHEN TipusId = 1524 THEN '(II.)'
 | 
						|
        WHEN TipusId = 1525 THEN '(IV.)'
 | 
						|
      END AS Ertekeles
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM #ErtekelesekTemp
 | 
						|
  WHERE
 | 
						|
    (MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
 | 
						|
    AND TipusId IN (1518, 1522, 1523, 1524, 1525)
 | 
						|
 | 
						|
  UNION ALL
 | 
						|
 | 
						|
  SELECT 
 | 
						|
    'Szorgalom'
 | 
						|
    ,CASE
 | 
						|
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap THEN 13
 | 
						|
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) > @FelevVegeNap  THEN 14
 | 
						|
      ELSE 
 | 
						|
      DATEPART(mm, Datum)
 | 
						|
     END AS Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev) 
 | 
						|
    + CASE 
 | 
						|
        WHEN TipusId = 1518 THEN ''
 | 
						|
        WHEN TipusId = 1522 THEN '(I.)'
 | 
						|
        WHEN TipusId = 1523 THEN '(III.)'
 | 
						|
        WHEN TipusId = 1524 THEN '(II.)'
 | 
						|
        WHEN TipusId = 1525 THEN '(IV.)'
 | 
						|
      END AS Ertekeles
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM #ErtekelesekTemp
 | 
						|
  WHERE
 | 
						|
    (SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
 | 
						|
    AND TipusId IN (1518, 1522, 1523, 1524, 1525)
 | 
						|
 | 
						|
  UNION ALL
 | 
						|
 | 
						|
  SELECT 
 | 
						|
    'Szorgalom'
 | 
						|
    ,15  Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,COALESCE(SzorgalomErtek, SzorgalomOsztalyzatNev, SzorgalomSzovegRovidNev) + Jeloles
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM #ErtekelesekTemp
 | 
						|
  WHERE
 | 
						|
    (SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL OR SzorgalomSzovegRovidNev IS NOT NULL)
 | 
						|
    AND TipusId = 1519
 | 
						|
 | 
						|
  UNION ALL
 | 
						|
 | 
						|
  SELECT 
 | 
						|
    'Magatartás'
 | 
						|
    ,15  Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,COALESCE(MagatartasErtek, MagatartasOsztalyzatNev, MagatartasSzovegRovidNev)  + Jeloles
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM #ErtekelesekTemp
 | 
						|
  WHERE
 | 
						|
    (MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL OR MagatartasSzovegRovidNev IS NOT NULL)
 | 
						|
    AND TipusId = 1519
 | 
						|
 | 
						|
  UNION ALL
 | 
						|
 | 
						|
  SELECT 
 | 
						|
    'Szorgalom'
 | 
						|
    ,16  Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,COALESCE(SzorgalomErtek, SzorgalomOsztalyzatNev, SzorgalomSzovegRovidNev)  + Jeloles
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM #ErtekelesekTemp
 | 
						|
  WHERE
 | 
						|
    (SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL OR SzorgalomSzovegRovidNev IS NOT NULL) 
 | 
						|
    AND TipusId = 1520
 | 
						|
 | 
						|
  UNION ALL
 | 
						|
 | 
						|
  SELECT 
 | 
						|
    'Magatartás'
 | 
						|
    ,16  Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,COALESCE(MagatartasErtek, MagatartasOsztalyzatNev, MagatartasSzovegRovidNev) + Jeloles
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM #ErtekelesekTemp
 | 
						|
  WHERE
 | 
						|
    (MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL OR MagatartasSzovegRovidNev IS NOT NULL)
 | 
						|
    AND TipusId = 1520
 | 
						|
  )magszorg
 | 
						|
 | 
						|
  INSERT INTO #magatartasSzorgalom 
 | 
						|
  SELECT DISTINCT
 | 
						|
     Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,Tipus
 | 
						|
    ,STUFF((
 | 
						|
      SELECT ', ' + CAST(Ertekeles AS nvarchar(max))
 | 
						|
      FROM #magatartasSzorgalomTMP bmsz 
 | 
						|
      WHERE 
 | 
						|
        msz.TanuloId = bmsz.TanuloId
 | 
						|
        AND msz.Tipus = bmsz.Tipus
 | 
						|
        AND msz.Honap = bmsz.Honap
 | 
						|
        AND msz.TanuloCsoportId = bmsz.TanuloCsoportId
 | 
						|
      ORDER BY bmsz.Datum,bmsz.RogzitesDatum
 | 
						|
      FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles
 | 
						|
    ,0 AS RENDEZ0
 | 
						|
    ,IIF(Tipus = 'Magatartás', 0, 1) RENDEZ1
 | 
						|
    ,'' RENDEZ2
 | 
						|
    ,0 RENDEZ3
 | 
						|
    ,0 RENDEZ4
 | 
						|
    ,'' RENDEZ5
 | 
						|
    ,CASE 
 | 
						|
      WHEN Honap = 2 THEN 8
 | 
						|
      WHEN Honap = 3 THEN 9
 | 
						|
      WHEN Honap = 4 THEN 10
 | 
						|
      WHEN Honap = 5 THEN 11
 | 
						|
      WHEN Honap = 6 THEN 12
 | 
						|
      WHEN Honap = 9 THEN  1
 | 
						|
      WHEN Honap = 10 THEN 2
 | 
						|
      WHEN Honap = 11 THEN 3
 | 
						|
      WHEN Honap = 12 THEN 4
 | 
						|
      WHEN Honap = 13 THEN 5
 | 
						|
      WHEN Honap = 14 THEN 7
 | 
						|
      WHEN Honap = 15 THEN 6
 | 
						|
      WHEN Honap = 16 THEN 15
 | 
						|
    END AS RendezHonap
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM #magatartasSzorgalomTMP msz
 | 
						|
 | 
						|
  CREATE CLUSTERED INDEX ci111sss on #magatartasSzorgalomTMP (tanulocsoportid) 
 | 
						|
 | 
						|
  INSERT INTO #jegyekTMP 
 | 
						|
  SELECT 
 | 
						|
     Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,TantargyId
 | 
						|
    ,TantargyNev
 | 
						|
    ,Ertekeles
 | 
						|
    ,RENDEZ0
 | 
						|
    ,RENDEZ1
 | 
						|
    ,RENDEZ2
 | 
						|
    ,RENDEZ3
 | 
						|
    ,RENDEZ4
 | 
						|
    ,RENDEZ5
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM
 | 
						|
  (SELECT 
 | 
						|
     CASE
 | 
						|
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap THEN 13
 | 
						|
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) > @FelevVegeNap  THEN 14
 | 
						|
      ELSE 
 | 
						|
      DATEPART(mm, Datum)
 | 
						|
     END AS Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,TantargyId
 | 
						|
    ,TantargyNev
 | 
						|
    ,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek)
 | 
						|
      + CASE 
 | 
						|
		  WHEN TipusId = 1518 THEN ''
 | 
						|
		  WHEN TipusId = 1522 THEN '(I.)'
 | 
						|
		  WHEN TipusId = 1523 THEN '(III.)'
 | 
						|
		  WHEN TipusId = 1524 THEN '(II.)'
 | 
						|
		  WHEN TipusId = 1525 THEN '(IV.)'
 | 
						|
		  WHEN TipusId = 1521 THEN '(mz)'
 | 
						|
		  WHEN TipusId = 1526 THEN '(pv)'
 | 
						|
		  WHEN TipusId = 1527 THEN '(ov)'
 | 
						|
	  	  WHEN TipusId = 1528 THEN '(kv)'
 | 
						|
		  WHEN TipusId = 6916 THEN '(pótló v.)'
 | 
						|
		  WHEN TipusId = 6917 THEN '(jv)'
 | 
						|
		  WHEN TipusId = 6918 THEN '(bv)'
 | 
						|
		  ELSE ' ' + LOWER(SUBSTRING(C_NAME, 0, 3))
 | 
						|
      END AS Ertekeles
 | 
						|
    ,RENDEZ0
 | 
						|
    ,RENDEZ1
 | 
						|
    ,RENDEZ2
 | 
						|
    ,RENDEZ3
 | 
						|
    ,RENDEZ4
 | 
						|
    ,RENDEZ5
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM #ErtekelesekTemp ertekeles
 | 
						|
  LEFT JOIN T_DICTIONARYITEMBASE_OSSZES ertekesMod ON ertekeles.TipusId = ertekesMod.ID AND TOROLT = 'F' AND ertekesMod.C_TANEVID = @tanevId
 | 
						|
  WHERE
 | 
						|
    isMagatartasSzorgalom = 'F'
 | 
						|
    AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
 | 
						|
    AND TipusId NOT IN (1519, 1520)
 | 
						|
  
 | 
						|
  UNION ALL
 | 
						|
 | 
						|
  SELECT 
 | 
						|
     CASE 
 | 
						|
      WHEN TipusId = 1519 THEN 15
 | 
						|
      WHEN TipusId = 1520 THEN 16
 | 
						|
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap THEN 13
 | 
						|
      WHEN DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) > @FelevVegeNap  THEN 14
 | 
						|
      ELSE 
 | 
						|
      DATEPART(mm, Datum)
 | 
						|
     END AS Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,TantargyId
 | 
						|
    ,TantargyNev
 | 
						|
    ,CASE
 | 
						|
      WHEN TipusId in (1519, 1520) THEN LOWER(ISNULL(ErtekelesSzovegRovidNev, 'sz'))
 | 
						|
      WHEN TipusId in (1522, 1523, 1524, 1525) THEN 'sz'
 | 
						|
        + CASE 
 | 
						|
		        WHEN TipusId = 1522 THEN '(I.)'
 | 
						|
		        WHEN TipusId = 1523 THEN '(III.)'
 | 
						|
		        WHEN TipusId = 1524 THEN '(II.)'
 | 
						|
		        WHEN TipusId = 1525 THEN '(IV.)'
 | 
						|
        END
 | 
						|
      ELSE
 | 
						|
        'sz' + Jeloles
 | 
						|
      END
 | 
						|
      AS Ertekeles
 | 
						|
    ,RENDEZ0
 | 
						|
    ,RENDEZ1
 | 
						|
    ,RENDEZ2
 | 
						|
    ,RENDEZ3
 | 
						|
    ,RENDEZ4
 | 
						|
    ,RENDEZ5
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM #ErtekelesekTemp
 | 
						|
  WHERE
 | 
						|
    ErtekelesSzoveg IS NOT NULL
 | 
						|
 | 
						|
  UNION ALL
 | 
						|
 | 
						|
  SELECT 
 | 
						|
     15 Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,TantargyId
 | 
						|
    ,TantargyNev
 | 
						|
    ,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek) + IIF(@isMegjegyzesMegjelenjen = 1, Jeloles, '')
 | 
						|
    ,RENDEZ0
 | 
						|
    ,RENDEZ1
 | 
						|
    ,RENDEZ2
 | 
						|
    ,RENDEZ3
 | 
						|
    ,RENDEZ4
 | 
						|
    ,RENDEZ5
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM #ErtekelesekTemp
 | 
						|
  WHERE
 | 
						|
    isMagatartasSzorgalom = 'F'
 | 
						|
    AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
 | 
						|
    AND TipusId = 1519
 | 
						|
 | 
						|
  UNION ALL
 | 
						|
 | 
						|
  SELECT 
 | 
						|
     16 Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,TantargyId
 | 
						|
    ,TantargyNev
 | 
						|
    ,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek) + IIF(@isMegjegyzesMegjelenjen = 1, Jeloles, '')
 | 
						|
    ,RENDEZ0
 | 
						|
    ,RENDEZ1
 | 
						|
    ,RENDEZ2
 | 
						|
    ,RENDEZ3
 | 
						|
    ,RENDEZ4
 | 
						|
    ,RENDEZ5
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
  FROM #ErtekelesekTemp
 | 
						|
  WHERE
 | 
						|
    isMagatartasSzorgalom = 'F'
 | 
						|
    AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
 | 
						|
    AND TipusId = 1520
 | 
						|
  )jegyek
 | 
						|
 | 
						|
  CREATE CLUSTERED INDEX ci111ssws on #jegyekTMP (tanulocsoportid) 
 | 
						|
-----------------------------------------------------------------------------------------------
 | 
						|
  INSERT INTO #jegyekTMP
 | 
						|
  SELECT        
 | 
						|
	 Honap
 | 
						|
    ,TanuloId
 | 
						|
    ,TanuloCsoportId
 | 
						|
    ,NULL AS TantargyId
 | 
						|
    ,a.Tipus
 | 
						|
    ,Ertekeles 
 | 
						|
    ,0 AS RENDEZ0
 | 
						|
    ,IIF(a.Tipus = 'Magatartás', 0, 1) RENDEZ1
 | 
						|
    ,'' AS RENDEZ2
 | 
						|
    ,0 AS RENDEZ3
 | 
						|
    ,0 AS RENDEZ4
 | 
						|
    ,'' AS RENDEZ5
 | 
						|
    ,Datum
 | 
						|
    ,RogzitesDatum
 | 
						|
 FROM #magatartasSzorgalomTmp a
 | 
						|
 | 
						|
  -- Összeszedjük az összes Tanuló/Tanulócsoport/Hónap-ot
 | 
						|
  INSERT INTO #TanuloIdHonap
 | 
						|
  SELECT
 | 
						|
     tcs.C_TANULOID AS ID
 | 
						|
    ,Honap
 | 
						|
    ,tcs.ID AS TanuloCsoportId
 | 
						|
  FROM T_TANULOCSOPORT_OSSZES tcs
 | 
						|
  CROSS JOIN (VALUES (2),(3),(4),(5),(6),(9),(10),(11),(12),(13),(14),(15),(16)) Honap (Honap)
 | 
						|
  WHERE tcs.C_OSZTALYCSOPORTID = @osztalycsoportId
 | 
						|
    
 | 
						|
  INSERT INTO #Tantargyak
 | 
						|
  EXEC uspGetDokumentumTantargyakErtekeleshez @intezmenyId, @tanevId, @osztalyCsoportId, @csakKivalasztottOsztalyCsoport
 | 
						|
 | 
						|
  INSERT INTO #TanuloTantargyHonapTmp
 | 
						|
  SELECT
 | 
						|
     tih.Id AS TanuloId
 | 
						|
    ,tih.TanuloCsoportId AS TanuloCsoportId
 | 
						|
    ,tih.Honap AS Honap
 | 
						|
    ,t.C_NEV AS TantargyNev
 | 
						|
    ,t.ID AS TantargyId
 | 
						|
    ,t.RENDEZ0
 | 
						|
    ,t.RENDEZ1
 | 
						|
    ,t.RENDEZ2
 | 
						|
    ,t.RENDEZ3
 | 
						|
    ,t.RENDEZ4
 | 
						|
    ,t.RENDEZ5
 | 
						|
  FROM #TanuloIdHonap tih
 | 
						|
    INNER JOIN #Tantargyak t ON t.c_tanuloid = tih.Id and t.c_tanulocsoportid = tih.TanuloCsoportId
 | 
						|
 | 
						|
-----------------------------------------------------------------------------------------------------------
 | 
						|
  INSERT INTO #jegyek 
 | 
						|
  SELECT DISTINCT
 | 
						|
     TanuloIdHonap.Honap
 | 
						|
    ,TanuloIdHonap.TanuloId
 | 
						|
    ,TanuloIdHonap.TanuloCsoportId
 | 
						|
    ,TanuloIdHonap.TantargyId
 | 
						|
    ,TanuloIdHonap.TantargyNev
 | 
						|
    ,STUFF((
 | 
						|
      SELECT ', ' + CAST(Ertekeles AS nvarchar(max))
 | 
						|
      FROM #jegyekTMP bjegyekTMP
 | 
						|
      WHERE 
 | 
						|
        jegyekTMP.TanuloId = bjegyekTMP.TanuloId
 | 
						|
        AND jegyekTMP.TanuloCsoportId = bjegyekTMP.TanuloCsoportId
 | 
						|
        AND jegyekTMP.TantargyNev = bjegyekTMP.TantargyNev
 | 
						|
        AND jegyekTMP.Honap = bjegyekTMP.Honap
 | 
						|
      ORDER BY Datum, RogzitesDatum
 | 
						|
      FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles
 | 
						|
    ,TanuloIdHonap.RENDEZ0
 | 
						|
    ,TanuloIdHonap.RENDEZ1
 | 
						|
    ,TanuloIdHonap.RENDEZ2
 | 
						|
    ,TanuloIdHonap.RENDEZ3
 | 
						|
    ,TanuloIdHonap.RENDEZ4
 | 
						|
    ,TanuloIdHonap.RENDEZ5
 | 
						|
    ,CASE 
 | 
						|
      WHEN TanuloIdHonap.Honap = 2 THEN 8
 | 
						|
      WHEN TanuloIdHonap.Honap = 3 THEN 9
 | 
						|
      WHEN TanuloIdHonap.Honap = 4 THEN 10
 | 
						|
      WHEN TanuloIdHonap.Honap = 5 THEN 11
 | 
						|
      WHEN TanuloIdHonap.Honap = 6 THEN 12
 | 
						|
      WHEN TanuloIdHonap.Honap = 9 THEN  1
 | 
						|
      WHEN TanuloIdHonap.Honap = 10 THEN 2
 | 
						|
      WHEN TanuloIdHonap.Honap = 11 THEN 3
 | 
						|
      WHEN TanuloIdHonap.Honap = 12 THEN 4
 | 
						|
      WHEN TanuloIdHonap.Honap = 13 THEN 5
 | 
						|
      WHEN TanuloIdHonap.Honap = 14 THEN 7
 | 
						|
      WHEN TanuloIdHonap.Honap = 15 THEN 6
 | 
						|
      WHEN TanuloIdHonap.Honap = 16 THEN 15
 | 
						|
      END AS RendezHonap
 | 
						|
  FROM #TanuloTantargyHonapTmp TanuloIdHonap
 | 
						|
    LEFT JOIN #jegyekTMP jegyekTMP ON TanuloIdHonap.TanuloId = jegyekTMP.TanuloId 
 | 
						|
                      AND TanuloIdHonap.Honap = jegyekTMP.Honap 
 | 
						|
                      AND TanuloIdHonap.TanuloCsoportId = jegyekTMP.TanuloCsoportId
 | 
						|
                      AND TanuloIdHonap.TantargyNev = jegyekTMP.TantargyNev
 | 
						|
 | 
						|
   IF @fuggolegesTantargyak = 1
 | 
						|
   BEGIN
 | 
						|
   
 | 
						|
    DECLARE @tantargyakJegyek NVARCHAR(MAX)
 | 
						|
    DECLARE @tantargyakNevvelJegyek NVARCHAR(MAX)
 | 
						|
    SELECT  @tantargyakNevvelJegyek = ISNULL(@tantargyakNevvelJegyek + ', ', '') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + '] AS [' + t.TantargyNev + ']',
 | 
						|
        @tantargyakJegyek = ISNULL(@tantargyakJegyek + ', ', '[0], [1],') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + ']'
 | 
						|
    FROM (SELECT DISTINCT TantargyId, IIF(LEN(t.c_nev) > 128, SUBSTRING(t.C_NEV,1,120) + '...', t.c_nev) AS TantargyNev, RENDEZ0, RENDEZ1
 | 
						|
      ,RENDEZ2 ,RENDEZ3, RENDEZ4, RENDEZ5  FROM #jegyek j INNER JOIN T_TANTARGY_OSSZES t ON t.Id = j.TantargyId ) t
 | 
						|
    ORDER BY RENDEZ0, RENDEZ1, RENDEZ2, RENDEZ3, RENDEZ4, RENDEZ5
 | 
						|
 | 
						|
    DECLARE @sqlJegyek NVARCHAR(MAX)
 | 
						|
    SET @sqlJegyek = '
 | 
						|
    SELECT 
 | 
						|
       TanuloId tanuloID
 | 
						|
      ,TanuloCsoportId
 | 
						|
      ,CASE 
 | 
						|
        WHEN Honap = 2 THEN ''02.''
 | 
						|
        WHEN Honap = 3 THEN ''03.''
 | 
						|
        WHEN Honap = 4 THEN ''04.''
 | 
						|
        WHEN Honap = 5 THEN ''05.''
 | 
						|
        WHEN Honap = 6 THEN ''06.''
 | 
						|
        WHEN Honap = 9 THEN ''09.''
 | 
						|
        WHEN Honap = 10 THEN ''10.''
 | 
						|
        WHEN Honap = 11 THEN ''11.''
 | 
						|
        WHEN Honap = 12 THEN ''12.''
 | 
						|
        WHEN Honap = 13 THEN ''1/I.''
 | 
						|
        WHEN Honap = 14 THEN ''1/II.''
 | 
						|
        WHEN Honap = 15 THEN ''F''
 | 
						|
        WHEN Honap = 16 THEN ''É''
 | 
						|
      END AS periodusNev
 | 
						|
        ,piv.[0] AS Magatartás
 | 
						|
        ,piv.[1] AS Szorgalom
 | 
						|
        ,' + @tantargyakNevvelJegyek + '  
 | 
						|
    FROM 
 | 
						|
    (
 | 
						|
      SELECT 
 | 
						|
        CASE 
 | 
						|
          WHEN TantargyNev = ''Magatartás'' THEN 0
 | 
						|
          WHEN TantargyNev = ''Szorgalom'' THEN 1
 | 
						|
          ELSE TantargyId 
 | 
						|
        END AS TantargyId
 | 
						|
        ,Honap
 | 
						|
        ,s.ID TanuloId
 | 
						|
        ,s.TanuloCsoportId
 | 
						|
        ,Ertekeles
 | 
						|
        ,RendezHonap 
 | 
						|
      FROM #jegyek j 
 | 
						|
        INNER JOIN #studentsWithTanuloCsoport s on j.Tanuloid = s.ID AND s.TanuloCsoportId = j.TanuloCsoportId
 | 
						|
    )a 
 | 
						|
    PIVOT (MAX(Ertekeles) FOR TantargyId in (' + @tantargyakJegyek + ')) piv
 | 
						|
    ORDER BY RendezHonap    
 | 
						|
    '
 | 
						|
  
 | 
						|
    IF (@tantargyakJegyek IS NULL)
 | 
						|
      BEGIN
 | 
						|
        SELECT 0 AS tanuloId, 0 as TanuloCsoportId
 | 
						|
      END
 | 
						|
    ELSE
 | 
						|
      BEGIN
 | 
						|
        EXEC sp_executesql @sqlJegyek
 | 
						|
      END
 | 
						|
  END
 | 
						|
  
 | 
						|
  ELSE
 | 
						|
  BEGIN
 | 
						|
    SELECT
 | 
						|
       TanuloId
 | 
						|
      ,TanuloCsoportId
 | 
						|
      ,TantargyNev AS Tipus
 | 
						|
      ,RENDEZ0
 | 
						|
      ,RENDEZ1
 | 
						|
      ,RENDEZ2
 | 
						|
      ,RENDEZ3
 | 
						|
      ,RENDEZ4
 | 
						|
      ,RENDEZ5
 | 
						|
      ,[9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16]  
 | 
						|
    FROM (
 | 
						|
      SELECT jegyek.TanuloId
 | 
						|
        ,ISNULL(tanulok.TanuloCsoportId
 | 
						|
            ,(SELECT TOP 1 ID FROM T_TANULOCSOPORT_OSSZES AS tcs 
 | 
						|
                WHERE tcs.C_TANULOID = jegyek.TanuloId AND tcs.C_OSZTALYCSOPORTID = @osztalyCsoportId)
 | 
						|
        ) AS TanuloCsoportId, Ertekeles, Honap, TantargyId, TantargyNev, RENDEZ0, RENDEZ1, RENDEZ2, RENDEZ3, RENDEZ4, RENDEZ5
 | 
						|
      FROM #jegyek AS jegyek
 | 
						|
        LEFT JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalycsoportId, 'T') AS tanulok ON
 | 
						|
            tanulok.TanuloId = jegyek.TanuloId AND tanulok.TanuloCsoportId = jegyek.TanuloCsoportId
 | 
						|
      ) j 
 | 
						|
    PIVOT (MAX(Ertekeles) FOR Honap IN ([9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16])) piv
 | 
						|
    ORDER BY TanuloId, RENDEZ0, RENDEZ1, RENDEZ2, RENDEZ3, RENDEZ4, RENDEZ5, Tipus
 | 
						|
  END
 | 
						|
END
 | 
						|
 | 
						|
GO |