kreta/Kreta.DataAccess.Migrations/DBScripts/Database/dbo/Stored procedures/uspGetDokumentumErtekelesekIdoszakonkent.sql
2024-03-13 00:33:46 +01:00

697 lines
No EOL
20 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
,@osztalyzatTipusTypeID int = 44
,@magatartasErtekelesTipusTypeID int = 50
,@szorgalomErtekelesTipusTypeID int = 51
,@pIsOsztalynaplobanNemJelenikMeg bit = 0
,@pIsKellKapcsolodoOsztalyCsoportok bit = 0
,@pIsTantargynevNyomtatvanyban bit = 0
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)
,TantargyNevNyomtatvanyban 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)
,TantargyNevNyomtatvanyban 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)
,TantargyNevNyomtatvanyban 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
'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
,CASE
WHEN TipusId in (1522, 1523, 1524, 1525) THEN LOWER(ISNULL(MagatartasSzovegRovidNev, 'sz'))
+ CASE
WHEN TipusId = 1522 THEN '(I.)'
WHEN TipusId = 1523 THEN '(III.)'
WHEN TipusId = 1524 THEN '(II.)'
WHEN TipusId = 1525 THEN '(IV.)'
END
ELSE
LOWER(ISNULL(MagatartasSzovegRovidNev, 'sz')) + Jeloles
END
,Datum
,RogzitesDatum
FROM #ErtekelesekTemp
WHERE
MagatartasSzoveg 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'
,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
,CASE
WHEN TipusId in (1522, 1523, 1524, 1525) THEN LOWER(ISNULL(SzorgalomSzovegRovidNev, 'sz'))
+ CASE
WHEN TipusId = 1522 THEN '(I.)'
WHEN TipusId = 1523 THEN '(III.)'
WHEN TipusId = 1524 THEN '(II.)'
WHEN TipusId = 1525 THEN '(IV.)'
END
ELSE
LOWER(ISNULL(SzorgalomSzovegRovidNev, 'sz')) + Jeloles
END
,Datum
,RogzitesDatum
FROM #ErtekelesekTemp
WHERE
SzorgalomSzoveg IS NOT NULL
AND TipusId IN (1518, 1522, 1523, 1524, 1525)
UNION ALL
SELECT
'Szorgalom'
,15 Honap
,TanuloId
,TanuloCsoportId
,COALESCE(SzorgalomErtek, SzorgalomOsztalyzatNev, LOWER(ISNULL(SzorgalomSzovegRovidNev, 'sz'))) + ISNULL(Jeloles, '')
,Datum
,RogzitesDatum
FROM #ErtekelesekTemp
WHERE
(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL OR SzorgalomSzoveg IS NOT NULL)
AND TipusId = 1519
UNION ALL
SELECT
'Magatartás'
,15 Honap
,TanuloId
,TanuloCsoportId
,COALESCE(MagatartasErtek, MagatartasOsztalyzatNev, LOWER(ISNULL(MagatartasSzovegRovidNev, 'sz'))) + ISNULL(Jeloles, '')
,Datum
,RogzitesDatum
FROM #ErtekelesekTemp
WHERE
(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL OR MagatartasSzoveg IS NOT NULL)
AND TipusId = 1519
UNION ALL
SELECT
'Szorgalom'
,16 Honap
,TanuloId
,TanuloCsoportId
,COALESCE(SzorgalomErtek, SzorgalomOsztalyzatNev, LOWER(ISNULL(SzorgalomSzovegRovidNev, 'sz'))) + ISNULL(Jeloles, '')
,Datum
,RogzitesDatum
FROM #ErtekelesekTemp
WHERE
(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL OR SzorgalomSzoveg IS NOT NULL)
AND TipusId = 1520
UNION ALL
SELECT
'Magatartás'
,16 Honap
,TanuloId
,TanuloCsoportId
,COALESCE(MagatartasErtek, MagatartasOsztalyzatNev, LOWER(ISNULL(MagatartasSzovegRovidNev, 'sz'))) + ISNULL(Jeloles, '')
,Datum
,RogzitesDatum
FROM #ErtekelesekTemp
WHERE
(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL OR MagatartasSzoveg 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
,TantargyNevNyomtatvanyban
,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
,TantargyNevNyomtatvanyban
,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek)
+ CASE
WHEN TipusId = 1518 THEN ''
WHEN TipusId = 1522 THEN '(I.)' + ISNULL(Jeloles, '')
WHEN TipusId = 1523 THEN '(III.)' + ISNULL(Jeloles, '')
WHEN TipusId = 1524 THEN '(II.)' + ISNULL(Jeloles, '')
WHEN TipusId = 1525 THEN '(IV.)' + ISNULL(Jeloles, '')
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
,TantargyNevNyomtatvanyban
,CASE
WHEN TipusId in (1519, 1520) THEN LOWER(ISNULL(ErtekelesSzovegRovidNev, 'sz'))
WHEN TipusId in (1522, 1523, 1524, 1525) THEN LOWER(ISNULL(ErtekelesSzovegRovidNev, 'sz'))
+ CASE
WHEN TipusId = 1522 THEN '(I.)'
WHEN TipusId = 1523 THEN '(III.)'
WHEN TipusId = 1524 THEN '(II.)'
WHEN TipusId = 1525 THEN '(IV.)'
END
ELSE
LOWER(ISNULL(ErtekelesSzovegRovidNev, '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
,TantargyNevNyomtatvanyban
,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek) + IIF(@isMegjegyzesMegjelenjen = 1, ISNULL(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
,TantargyNevNyomtatvanyban
,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek) + IIF(@isMegjegyzesMegjelenjen = 1, ISNULL(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
,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, @osztalyzatTipusTypeID, @magatartasErtekelesTipusTypeID, @szorgalomErtekelesTipusTypeID, @pIsKellKapcsolodoOsztalyCsoportok
INSERT INTO #TanuloTantargyHonapTmp
SELECT
tih.Id AS TanuloId
,tih.TanuloCsoportId AS TanuloCsoportId
,tih.Honap AS Honap
,t.C_NEV AS TantargyNev
,t.C_NEVNYOMTATVANYBAN AS TantargyNevNyomtatvanyban
,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
,TanuloIdHonap.TantargyNevNyomtatvanyban
,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 @pIsOsztalynaplobanNemJelenikMeg = 1
BEGIN
-- Azon sorok eltávolítása, ahol a tantárgy meg van jelölve, hogy osztálynaplóban nem látszik, és nincs hozzá értékelés
DELETE j
FROM #jegyek j
INNER JOIN T_TANTARGY_OSSZES targy ON targy.ID = j.TantargyId
AND targy.TOROLT = 'F'
WHERE targy.C_ISOSZTALYNAPLOBANEMLATSZIK = 'T'
AND j.Ertekeles IS NULL
END
IF @fuggolegesTantargyak = 1
BEGIN
DECLARE @tantargyakJegyek NVARCHAR(MAX)
DECLARE @tantargyakNevvelJegyek NVARCHAR(MAX)
SELECT @tantargyakNevvelJegyek = ISNULL(@tantargyakNevvelJegyek + ', ', '') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + '] AS [' + REPLACE(REPLACE(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, IIF(@pIsTantargynevNyomtatvanyban = 1 AND TantargyNevNyomtatvanyban IS NOT NULL AND TantargyNevNyomtatvanyban != '', TantargyNevNyomtatvanyban, TantargyNev) AS 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