kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20180123155947_KRETA_4871/sp_GetUzenofuzetErtekelolap.sql
2024-03-13 00:33:46 +01:00

337 lines
No EOL
9.4 KiB
Transact-SQL

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetUzenofuzetErtekelolap]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetUzenofuzetErtekelolap]
END
GO
CREATE PROCEDURE [dbo].[sp_GetUzenofuzetErtekelolap]
@osztalyId INT,
@tanevId INT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
--Intézmény, tanév
SELECT T_INTEZMENYADATOK_OSSZES.C_NEV IntezmenyNeve,
T_INTEZMENYADATOK_OSSZES.C_VAROS IntezmenyVaros,
dbo.fnGetDokumentumIntezmenyCime(@tanevId) IntezmenyCime,
T_INTEZMENYADATOK_OSSZES.C_TELEFONSZAM TELEFON,
T_INTEZMENYADATOK_OSSZES.C_EMAILCIM EMAILCIM,
T_INTEZMENYADATOK_OSSZES.C_OMKOD IntezmenyOMKod,
T_INTEZMENYADATOK_OSSZES.C_IGAZGATONEVE Intezmenyvezeto,
(SELECT C_OSZTALYFONOKID FROM T_OSZTALY_OSSZES WHERE T_OSZTALY_OSSZES.ID = @osztalyId AND T_OSZTALY_OSSZES.C_ALTANEVID = @tanevId AND T_OSZTALY_OSSZES.TOROLT = 'F') PartnerID,
T_TANEV_OSSZES.C_NEV TANEV
FROM T_INTEZMENYADATOK_OSSZES
INNER JOIN T_TANEV_OSSZES on T_TANEV_OSSZES.ID = T_INTEZMENYADATOK_OSSZES.C_TANEVID AND T_TANEV_OSSZES.C_INTEZMENYID = T_INTEZMENYADATOK_OSSZES.C_INTEZMENYID AND T_TANEV_OSSZES.TOROLT = 'F'
WHERE
T_INTEZMENYADATOK_OSSZES.TOROLT = 'F'
AND T_TANEV_OSSZES.ID = @tanevId
--Osztály, évfolyam
SELECT T_OSZTALYCSOPORT_OSSZES.C_NEV,
T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA,
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV Osztalyfonok
FROM T_OSZTALYCSOPORT_OSSZES
INNER JOIN T_OSZTALY_OSSZES ON T_OSZTALYCSOPORT_OSSZES.id = T_OSZTALY_OSSZES.ID
INNER JOIN T_FELHASZNALO_OSSZES ON T_FELHASZNALO_OSSZES.id = T_OSZTALY_OSSZES.c_osztalyfonokid
WHERE T_OSZTALYCSOPORT_OSSZES.TOROLT='F'
AND T_OSZTALYCSOPORT_OSSZES.ID = @osztalyId
AND T_OSZTALYCSOPORT_OSSZES.C_TANEVID = @tanevId
--Tanuló adatai
SELECT
T_FELHASZNALO_OSSZES.ID TANULOID,
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV TANULONEV,
T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO OKTATASIAZONOSITO
FROM T_FELHASZNALO_OSSZES
INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') Tanulok ON Tanulok.TanuloId = T_FELHASZNALO_OSSZES.Id
ORDER BY T_FELHASZNALO_OSSZES.C_NYOMTATASINEV
--Jegyek
SELECT
Datum
,TipusId
,ErtekelesSzoveg
,ErtekelesOsztalyzatId
,ErtekelesOsztalyzatValue
,ErtekelesOsztalyzatNev
,ErtekelesSzazalek
,MagatartasOsztalyzatId
,MagatartasOsztalyzatNev
,MagatartasSzoveg
,MagatartasErtekId
,MagatartasErtek
,SzorgalomOsztalyzatId
,SzorgalomOsztalyzatNev
,SzorgalomSzoveg
,SzorgalomErtekId
,SzorgalomErtek
,TanuloId
,OsztalyCsoportId
,TantargyId
,TantargyNevZarojellel
,TantargyNev
,TantargyNevNyomtatvanyban
,TargyKategoriaId
,FotargyE
,FotargyId
,Altantargy
,ErtekelesTema
,Jeloles
,JelolesAndErtekelesTema
,isMagatartasSzorgalom
INTO #ErtekelesekTemp
FROM fnGetDokumentumErtekelesekOsztalyonkent (@tanevId, @osztalyId)
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
,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev) Ertekeles
FROM #ErtekelesekTemp
WHERE
(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
AND TipusId = 1518
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
,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev)
FROM #ErtekelesekTemp
WHERE
(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
AND TipusId = 1518
UNION ALL
SELECT
'Szorgalom'
,15 Honap
,TanuloId
,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev)
FROM #ErtekelesekTemp
WHERE
(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
AND TipusId = 1519
UNION ALL
SELECT
'Magatartás'
,15 Honap
,TanuloId
,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev)
FROM #ErtekelesekTemp
WHERE
(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
AND TipusId = 1519
UNION ALL
SELECT
'Szorgalom'
,16 Honap
,TanuloId
,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev)
FROM #ErtekelesekTemp
WHERE
(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
AND TipusId = 1520
UNION ALL
SELECT
'Magatartás'
,16 Honap
,TanuloId
,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev)
FROM #ErtekelesekTemp
WHERE
(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
AND TipusId = 1520
UNION ALL
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
,ISNULL(MagatartasErtek, MagatartasOsztalyzatNev) Ertekeles
FROM #ErtekelesekTemp
WHERE
(MagatartasErtek IS NOT NULL OR MagatartasOsztalyzatNev IS NOT NULL)
AND TipusId = 1518
UNION ALL
SELECT
'Szorgalom' Tipus
,IIF(DATEPART(mm, Datum) = @FelevVegeHonap, IIF(DATEPART(mm, Datum) = @FelevVegeHonap AND DATEPART(DD, Datum) <= @FelevVegeNap, 13, 14), DATEPART(mm, Datum)) Honap
,TanuloId
,ISNULL(SzorgalomErtek, SzorgalomOsztalyzatNev)
FROM #ErtekelesekTemp
WHERE
(SzorgalomErtek IS NOT NULL OR SzorgalomOsztalyzatNev IS NOT NULL)
AND TipusId = 1518
)magszorg
SELECT DISTINCT
Honap
,TanuloId
,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
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 = 7 THEN 13
WHEN Honap = 8 THEN 14
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
,TantargyId
,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek) Ertekeles
,TargyKategoriaId Rendez
FROM #ErtekelesekTemp
WHERE
isMagatartasSzorgalom = 'F'
AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
AND TipusId = 1518
UNION ALL
SELECT
15 Honap
,TanuloId
,TantargyId
,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek)
,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
,TantargyId
,ISNULL(CONVERT(NVARCHAR(MAX),ErtekelesOsztalyzatValue), ErtekelesSzazalek)
,TargyKategoriaId Rendez
FROM #ErtekelesekTemp
WHERE
isMagatartasSzorgalom = 'F'
AND (ErtekelesOsztalyzatValue IS NOT NULL OR ErtekelesSzazalek IS NOT NULL)
AND TipusId = 1520
)jegyek
SELECT DISTINCT
Honap
,TanuloId
,TantargyId
,STUFF((
SELECT ', ' + CAST(Ertekeles AS nvarchar(max))
FROM #jegyekTMP bj
WHERE
j.TanuloId = bj.TanuloId
AND j.TantargyId = bj.TantargyId
AND j.Honap = bj.Honap
FOR XML PATH(''), TYPE).value('.', 'nvarchar(max)'), 1, 2,'') Ertekeles
,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 = 7 THEN 13
WHEN Honap = 8 THEN 14
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 #jegyek
FROM #jegyekTMP j
SELECT * FROM(
SELECT
TanuloId
, Tipus
, Rendez
,[9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16]
FROM (SELECT TanuloId, 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
,C_NEV TantargyNev
,Rendez
,[9],[10],[11],[12],[2],[3],[4],[5],[6],[13],[14],[15],[16]
FROM (SELECT TanuloId, 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
GO