373 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			373 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
SET ANSI_NULLS ON
 | 
						|
GO
 | 
						|
SET QUOTED_IDENTIFIER ON
 | 
						|
GO
 | 
						|
 | 
						|
IF OBJECT_ID('sp_GetDokumentumErtekelesekIdoszakonkent') IS NOT NULL
 | 
						|
BEGIN
 | 
						|
  DROP PROCEDURE sp_GetDokumentumErtekelesekIdoszakonkent
 | 
						|
END  
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE sp_GetDokumentumErtekelesekIdoszakonkent
 | 
						|
	@tanevId						INT, 
 | 
						|
	@osztalyCsoportId				INT, 
 | 
						|
	@ertekelesTipusa				INT, 
 | 
						|
	@csakTanorai					BIT, 
 | 
						|
	@csakKivlasztottOsztalyCsoport	BIT, 
 | 
						|
	@atsoroltTanuloErtekelesek		INT,
 | 
						|
	@fuggolegesTantargyak			BIT,
 | 
						|
	@isMegjegyzesMegjelenjen		BIT = 1
 | 
						|
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
 | 
						|
		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
 | 
						|
 | 
						|
		SELECT * INTO #magatartasSzorgalomTMP FROM
 | 
						|
		(SELECT 
 | 
						|
			'Magatartás' Tipus
 | 
						|
			,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum))  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
 | 
						|
		FROM #ErtekelesekTemp
 | 
						|
		WHERE
 | 
						|
			(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
 | 
						|
			AND TipusId IN (1518, 1522, 1523, 1524, 1525)
 | 
						|
 | 
						|
		UNION ALL
 | 
						|
 | 
						|
		SELECT 
 | 
						|
			'Szorgalom'
 | 
						|
			,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum))  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
 | 
						|
		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
 | 
						|
			,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev) + Jeloles
 | 
						|
		FROM #ErtekelesekTemp
 | 
						|
		WHERE
 | 
						|
			(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
 | 
						|
			AND TipusId = 1519
 | 
						|
 | 
						|
		UNION ALL
 | 
						|
 | 
						|
		SELECT 
 | 
						|
			'Magatartás'
 | 
						|
			,15  Honap
 | 
						|
			,TanuloId
 | 
						|
			,TanuloCsoportId
 | 
						|
			,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev)  + Jeloles
 | 
						|
		FROM #ErtekelesekTemp
 | 
						|
		WHERE
 | 
						|
			(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
 | 
						|
			AND TipusId = 1519
 | 
						|
 | 
						|
		UNION ALL
 | 
						|
 | 
						|
		SELECT 
 | 
						|
			'Szorgalom'
 | 
						|
			,16  Honap
 | 
						|
			,TanuloId
 | 
						|
			,TanuloCsoportId
 | 
						|
			,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev)  + Jeloles
 | 
						|
		FROM #ErtekelesekTemp
 | 
						|
		WHERE
 | 
						|
			(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL) 
 | 
						|
			AND TipusId = 1520
 | 
						|
 | 
						|
		UNION ALL
 | 
						|
 | 
						|
		SELECT 
 | 
						|
			'Magatartás'
 | 
						|
			,16  Honap
 | 
						|
			,TanuloId
 | 
						|
			,TanuloCsoportId
 | 
						|
			,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev) + Jeloles
 | 
						|
		FROM #ErtekelesekTemp
 | 
						|
		WHERE
 | 
						|
			(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
 | 
						|
			AND TipusId = 1520
 | 
						|
		)magszorg
 | 
						|
 | 
						|
		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
 | 
						|
				FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles 	
 | 
						|
			,IIF(Tipus = 'Magatartás', 0, 1) Rendez
 | 
						|
			,
 | 
						|
			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
 | 
						|
		INTO #magatartasSzorgalom 
 | 
						|
		FROM #magatartasSzorgalomTMP msz
 | 
						|
 | 
						|
		SELECT * INTO #jegyekTMP FROM
 | 
						|
		(SELECT 
 | 
						|
			IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum))  Honap
 | 
						|
			,TanuloId
 | 
						|
			,TanuloCsoportId
 | 
						|
			,TantargyId
 | 
						|
			,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)'
 | 
						|
				END AS Ertekeles
 | 
						|
			,TargyKategoriaId Rendez
 | 
						|
		FROM #ErtekelesekTemp
 | 
						|
		WHERE
 | 
						|
			isMagatartasSzorgalom = 'F'
 | 
						|
			AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
 | 
						|
			AND TipusId IN (1518, 1522, 1523, 1524, 1525, 1521, 1526, 1527, 1528, 6916, 6917, 6918)
 | 
						|
 | 
						|
		UNION ALL
 | 
						|
 | 
						|
		SELECT 
 | 
						|
			15  Honap
 | 
						|
			,TanuloId
 | 
						|
			,TanuloCsoportId
 | 
						|
			,TantargyId
 | 
						|
			,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek) + IIF(@isMegjegyzesMegjelenjen = 1, Jeloles, '') 
 | 
						|
			,TargyKategoriaId Rendez
 | 
						|
		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
 | 
						|
			,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek) + IIF(@isMegjegyzesMegjelenjen = 1, Jeloles, '')  
 | 
						|
			,TargyKategoriaId Rendez
 | 
						|
		FROM #ErtekelesekTemp
 | 
						|
		WHERE
 | 
						|
			isMagatartasSzorgalom = 'F'
 | 
						|
			AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
 | 
						|
			AND TipusId = 1520
 | 
						|
		)jegyek
 | 
						|
 | 
						|
		SELECT
 | 
						|
			 ID
 | 
						|
			,Honap
 | 
						|
			,TanuloCsoportId
 | 
						|
		INTO #TanuloIdHonap
 | 
						|
		FROM #studentsWithTanuloCsoport
 | 
						|
		CROSS JOIN (VALUES (2),(3),(4),(5),(6),(9),(10),(11),(12),(13),(14),(15),(16)) Honap (Honap)
 | 
						|
 | 
						|
		SELECT DISTINCT
 | 
						|
			 TanuloIdHonap.Honap
 | 
						|
			,TanuloIdHonap.Id TanuloId
 | 
						|
			,TanuloIdHonap.TanuloCsoportId
 | 
						|
			,TantargyId
 | 
						|
			,STUFF((
 | 
						|
				SELECT ', ' + CAST(Ertekeles AS nvarchar(max))
 | 
						|
				FROM #jegyekTMP bjegyekTMP
 | 
						|
				WHERE 
 | 
						|
					jegyekTMP.TanuloId = bjegyekTMP.TanuloId
 | 
						|
					AND jegyekTMP.TanuloCsoportId = bjegyekTMP.TanuloCsoportId
 | 
						|
					AND jegyekTMP.TantargyId = bjegyekTMP.TantargyId
 | 
						|
					AND jegyekTMP.Honap = bjegyekTMP.Honap
 | 
						|
				FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles 	
 | 
						|
			,Rendez
 | 
						|
			,
 | 
						|
				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
 | 
						|
		INTO #jegyek 
 | 
						|
		FROM #TanuloIdHonap TanuloIdHonap
 | 
						|
			LEFT JOIN #jegyekTMP jegyekTMP ON TanuloIdHonap.ID = jegyekTMP.TanuloId 
 | 
						|
												AND TanuloIdHonap.Honap = jegyekTMP.Honap 
 | 
						|
												AND TanuloIdHonap.TanuloCsoportId = jegyekTMP.TanuloCsoportId
 | 
						|
 | 
						|
   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, t.c_nev TantargyNev, C_TARGYKATEGORIA  FROM #jegyek j INNER JOIN T_TANTARGY_OSSZES t ON t.Id = j.TantargyId ) t
 | 
						|
		ORDER BY C_TARGYKATEGORIA
 | 
						|
 | 
						|
		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 
 | 
						|
			 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
 | 
						|
 | 
						|
		UNION ALL
 | 
						|
 | 
						|
		SELECT 
 | 
						|
			IIF(Tipus = ''Magatartás'', 0, 1)
 | 
						|
			,Honap
 | 
						|
			,s.ID
 | 
						|
			,s.TanuloCsoportId
 | 
						|
			,Ertekeles
 | 
						|
			,RendezHonap 
 | 
						|
		FROM #magatartasSzorgalom m
 | 
						|
			INNER JOIN #studentsWithTanuloCsoport s on m.Tanuloid = s.ID AND s.TanuloCsoportId = m.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 * FROM(
 | 
						|
		SELECT 
 | 
						|
			 TanuloId
 | 
						|
			 ,TanuloCsoportId
 | 
						|
			, Tipus
 | 
						|
			, Rendez
 | 
						|
			,[9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16]	
 | 
						|
		FROM (SELECT TanuloId, TanuloCsoportId, Ertekeles, Honap, Tipus, IIF(Tipus = 'Magatartás', 0, 1) TantargyId, Rendez
 | 
						|
				FROM #magatartasSzorgalom)a
 | 
						|
		PIVOT (MAX(Ertekeles) FOR Honap IN ([9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16])) piv
 | 
						|
		
 | 
						|
		UNION ALL
 | 
						|
 | 
						|
		SELECT
 | 
						|
			 TanuloId		TanuloId
 | 
						|
			,TanuloCsoportId
 | 
						|
			,C_NEV			TantargyNev
 | 
						|
			,Rendez
 | 
						|
			,[9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16]	
 | 
						|
		FROM (SELECT TanuloId, TanuloCsoportId, Ertekeles, Honap, TantargyId, Rendez FROM #jegyek) j
 | 
						|
			INNER JOIN (SELECT Id, C_NEV FROM T_TANTARGY_OSSZES) t ON t.Id = TantargyId
 | 
						|
		PIVOT (MAX(Ertekeles) FOR Honap IN ([9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16])) piv
 | 
						|
		)vegleges
 | 
						|
		ORDER BY TanuloId, Rendez, Tipus
 | 
						|
	END
 | 
						|
	
 | 
						|
	drop table #magatartasSzorgalomTMP
 | 
						|
	drop table #magatartasSzorgalom
 | 
						|
	drop table #jegyekTMP
 | 
						|
 | 
						|
END
 | 
						|
 | 
						|
GO |