kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20170621155141_KRETA_2007/sp_GetOsztalyNaplo.sql
2024-03-13 00:33:46 +01:00

1253 lines
No EOL
47 KiB
Transact-SQL

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('sp_GetOsztalyNaplo') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetOsztalyNaplo
END
GO
CREATE PROCEDURE sp_GetOsztalyNaplo
@intezmenyId INT,
@tanevId INT,
@osztalyId INT,
@isSzövegesNaplo BIT = 0,
@iskolaErdekuSzamit BIT,
@fuggolegesTantargyak BIT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @TanitasiNapTipusok TABLE (Id INT)
INSERT INTO @TanitasiNapTipusok
SELECT DISTINCT ID FROM T_DICTIONARYITEMBASE_OSSZES WHERE ID IN (1385, 1393, 1394, 1395, 1400, 1402, 1403, 1404)
DECLARE @ElsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1394 AND C_TANEVID = @tanevId AND TOROLT = 'F')
DECLARE @UtolsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1395 AND C_TANEVID = @tanevId AND TOROLT = 'F')
DECLARE @NapSorszam TABLE (Datum DATE, Sorszam NVARCHAR(4))
INSERT INTO @NapSorszam
SELECT
C_NAPDATUMA
,CAST(DENSE_RANK() OVER(ORDER BY C_NAPDATUMA) AS NVARCHAR(4))
FROM T_NAPTARINAP_OSSZES
WHERE
C_TANEVID = @tanevId
AND TOROLT = 'F'
AND C_NAPTIPUSA IN (SELECT Id FROM @TanitasiNapTipusok)
AND C_NAPDATUMA <= @UtolsoNap
CREATE TABLE #students (ID INT PRIMARY KEY, BelepesDatum DATE, KilepesDatum DATE)
INSERT INTO #students
SELECT
TanuloId
,BelepesDatum
,ISNULL(KilepesDatum, GETDATE())
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T')
-- Naplo fooldal
CREATE TABLE #osztalycsoportok (OsztalyCsoportId INT PRIMARY KEY)
INSERT INTO #osztalycsoportok (OsztalyCsoportId)
SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId)
CREATE TABLE #OsztalyVagyTanoraiCsoport (Id INT)
INSERT INTO #OsztalyVagyTanoraiCsoport
SELECT ID FROM fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId)
SELECT DISTINCT
ocs.C_NEV OsztalyNev
,o.C_OSZTALYNAPLOLEIRASA OsztalyMegjegyzes
,o.C_OSZTALYFONOKID PartnerID
,ofo.C_NYOMTATASINEV Osztalyfonok
,i.C_IGAZGATONEVE IntezmenyVezeto
,i.C_NEV IntezmenyNeve
,i.C_IRANYITOSZAM IntezmenyIranyitoszam
,i.C_VAROS IntezmenyVaros
,i.C_CIME IntezmenyCime
,i.C_OMKOD IntezmenyOMKod
,FORMAT(o.c_osztalynaplomegnyitasa, 'yyyy. MMMM dd.', 'hu-hu') NaploMegnyitasanakDatuma
,FORMAT(o.c_osztalynaplozarasa, 'yyyy. MMMM dd.', 'hu-hu') NaploZarasanakDatuma
,(SELECT COUNT(Id) FROM #students) TanulokSzama
,(SELECT MAX(CAST(Sorszam AS INT)) FROM @NapSorszam) TanitasiNapokSzama
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID and o.torolt='F'
LEFT JOIN T_FELHASZNALO_OSSZES ofo ON ofo.ID = o.C_OSZTALYFONOKID
INNER JOIN T_INTEZMENYADATOK_OSSZES i on i.C_INTEZMENYID=ocs.C_INTEZMENYID
WHERE ocs.ID = @osztalyId
-- Tanarok
SELECT targy.C_NEV TargyNev, tanar.C_NYOMTATASINEV TanarNev
FROM T_FELHASZNALO_OSSZES tanar
INNER JOIN T_FOGLALKOZASOK_TANAROK ft ON tanar.ID = ft.C_TANAROKID
INNER JOIN T_FOGLALKOZAS_OSSZES f ON f.ID = ft.C_FOGLALKOZASOKID and f.torolt='F'
INNER JOIN T_TANTARGY_OSSZES targy ON targy.ID = f.C_TANTARGYID and targy.torolt='F'
WHERE tanar.TOROLT = 'F' AND f.TOROLT = 'F'
AND f.C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #osztalycsoportok)
GROUP BY targy.C_NEV, tanar.C_NYOMTATASINEV
ORDER BY targy.C_NEV, tanar.C_NYOMTATASINEV
-- Orarend
EXEC sp_GetOrarendOsztalyonkent @intezmenyId, @tanevID, @osztalyid
-- Oralatogatasok
SELECT
FORMAT(T_ORALATOGATAS_OSSZES.C_DATUM, 'yyyy.MM.dd.') DATUM
,TANITASIORA.C_ORASZAM ORASZAM
,TARGY.C_NEV TARGYNEV
,T_FELHASZNALO_OSSZES.C_NYOMTATASINEV LATOGATO
,T_ORALATOGATAS_OSSZES.C_ORALATOGATOBEOSZTASA LATOGATOBEOSZTAS
,T_ORALATOGATAS_OSSZES.C_MEGJEGYZES ESZREVETEL
FROM T_ORALATOGATAS_OSSZES
INNER JOIN T_FELHASZNALO_OSSZES ON T_FELHASZNALO_OSSZES.ID = T_ORALATOGATAS_OSSZES.C_ERTEKELOID
INNER JOIN (SELECT ID, C_TANTARGYID, C_ORASZAM, C_OSZTALYCSOPORTID FROM T_TANITASIORA_OSSZES ) TANITASIORA ON TANITASIORA.ID = T_ORALATOGATAS_OSSZES.C_MEGTARTOTTORAID
INNER JOIN T_TANTARGY_OSSZES TARGY ON TARGY.ID = TANITASIORA.C_TANTARGYID
WHERE
T_ORALATOGATAS_OSSZES.TOROLT='F'
AND T_ORALATOGATAS_OSSZES.c_tanevId=@tanevId
AND C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId))
ORDER BY T_ORALATOGATAS_OSSZES.C_DATUM, TANITASIORA.C_ORASZAM
-- Naploellenorzesek
SELECT
FORMAT(C_ELLENORZESDATUMA, 'yyyy.MM.dd.') ELLENORZESDATUMA
,ELLENORZO.C_NYOMTATASINEV ELLENORZOSZEMELY
,T_NAPLOELLENORZES_OSSZES.C_ESZREVETEL ESZREVETEL
FROM T_NAPLOELLENORZES_OSSZES
INNER JOIN T_FELHASZNALO_OSSZES ELLENORZO ON ELLENORZO.ID = T_NAPLOELLENORZES_OSSZES.C_ELLENORZOSZEMELYID
WHERE
C_OSZTALYID = @osztalyId
AND T_NAPLOELLENORZES_OSSZES.TOROLT = 'F'
AND T_NAPLOELLENORZES_OSSZES.c_tanevId=@tanevId
/* Napló */
DECLARE @datum DATE=GETDATE()
CREATE TABLE #OraSorszam (TanitasioraId int, OraSorszam int)
INSERT INTO #OraSorszam
EXEC sp_GetOraSorszamByOsztaly
@osztalyCsoportId = @osztalyId,
@datum = @datum,
@intezmenyId = @intezmenyId,
@tanevId = @tanevId
SELECT
tao.Id TanitasioraId
,tao.C_DATUM Datum
,C_ORASZAM Oraszam
,C_ORATULAJDONOSID PedagogusId
,C_NYOMTATASINEV PedagogusNev
,IIF(C_MEGTARTOTT = 'T', ISNULL(CONVERT(NVARCHAR(MAX), OraSorszam),'-'), '-') OraSorszam
,IIF(C_MEGTARTOTT = 'T', C_TEMA, 'Elmaradt') Tema
,IIF(C_MEGTARTOTT = 'T', ISNULL(CONVERT(NVARCHAR(MAX), OraSorszam),'-') +'.: ' + C_TEMA, 'Elmaradt') TemaOraSzammal
,tao.C_HETNAPJA HetNapja
,C_HETSORSZAMA HetSorszama
,C_MEGTARTOTT Megtartott
,C_TANTARGYID TantargyId
,IIF(tantargy.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + tantargy.C_NEV + ')', tantargy.C_NEV) Tantargynev
,C_OSZTALYCSOPORTID OsztalyCsoportId
,C_NAPSORSZAMA NapSorszama
INTO #megtartottOrak
FROM T_TANITASIORA_OSSZES tao
INNER JOIN T_FELHASZNALO_OSSZES pedagogus ON pedagogus.Id = tao.C_ORATULAJDONOSID
INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = tao.C_TANTARGYID
LEFT JOIN #OraSorszam oraSorszam ON oraSorszam.TanitasioraId = tao.Id
WHERE
C_OSZTALYCSOPORTID IN (SELECT OsztalyCsoportId FROM #osztalycsoportok)
AND tao.TOROLT = 'F'
SELECT
nn.C_HETSORSZAMA
,MIN(nn.C_NAPDATUMA)
,MAX(nn.C_NAPDATUMA)
FROM T_NAPTARINAP_OSSZES nn
WHERE
nn.C_NAPDATUMA BETWEEN @ElsoNap AND @UtolsoNap
AND nn.C_HETNAPJA BETWEEN 1407 AND 1413
AND nn.TOROLT='F'
AND nn.c_tanevId = @tanevId
GROUP BY nn.C_HETSORSZAMA
ORDER BY MIN(nn.C_NAPDATUMA)
SELECT
C_NAPDATUMA Datum
,oraszam Oraszam
,C_HETSORSZAMA HetSorszama
,nn.C_HETNAPJA HetNapja
,C_MEGJEGYZES Megjegyzes
,ISNULL(Sorszam,'-') Sorszam
INTO #OsszesOra
FROM T_NAPTARINAP_OSSZES nn
LEFT JOIN @NapSorszam sorszam ON sorszam.Datum = nn.C_NAPDATUMA
LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND tr.C_TANEVID = nn.C_TANEVID AND tr.TOROLT = 'F'
CROSS JOIN (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12)) oraszam(oraszam)
WHERE
nn.C_TANEVID = @tanevId
AND nn.C_NAPTIPUSA <> 1386
AND nn.TOROLT = 'F'
AND nn.C_NAPDATUMA <= @UtolsoNap
IF @isSzövegesNaplo = 0 BEGIN /* NORMÁL OSZTÁLYNAPLÓ */
DECLARE @selectList nvarchar(MAX),
@pivotList nvarchar(MAX)
SELECT DISTINCT
tao.C_DATUM Datum
,t.C_NYOMTATASINEV + ' [' + STUFF((
SELECT ', ' + CAST(btao.C_ORASZAM AS VARCHAR(3)) + IIF(tm.C_TIPUS = 1500, '', '(k)')
FROM T_TANULOMULASZTAS_OSSZES tm
INNER JOIN T_TANITASIORA_OSSZES btao ON btao.ID = tm.C_TANITASIORAKID
INNER JOIN #students s ON s.ID = tm.C_ORATANULOIID AND btao.C_DATUM BETWEEN BelepesDatum AND KilepesDatum
WHERE
tao.C_DATUM = btao.C_DATUM
AND m.C_ORATANULOIID = tm.C_ORATANULOIID
AND tm.TOROLT = 'F'
AND tm.c_tanevId = @tanevId
ORDER BY btao.C_NAPTARINAPID, btao.C_ORASZAM
FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,2,'') + '] ' + CAST(SUM(IIF(m.C_IGAZOLT = 'T', 1, 0)) AS varchar(2)) + '/' + CAST(SUM(IIF(m.C_IGAZOLT = 'T' OR m.C_TIPUS = 1499, 0, 1)) AS varchar(2)) AS Hianyzas
INTO #hianyzasokTMP
FROM T_TANITASIORA_OSSZES tao
INNER JOIN T_TANULOMULASZTAS_OSSZES m ON m.C_TANITASIORAKID = tao.ID
INNER JOIN #osztalycsoportok cs ON cs.OsztalyCsoportId = tao.C_OSZTALYCSOPORTID
INNER JOIN T_FELHASZNALO_OSSZES t ON t.ID = m.C_ORATANULOIID
WHERE
m.TOROLT = 'F'
AND m.c_tanevId = @tanevId
AND tao.C_OSZTALYCSOPORTID IN (SELECT ID FROM #OsztalyVagyTanoraiCsoport)
AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
GROUP BY tao.C_DATUM, C_ORATANULOIID, C_NYOMTATASINEV
SELECT
Datum
,STUFF((
SELECT char(13) + char(10) + Hianyzas
FROM #hianyzasokTMP bHianyzasok
WHERE
Hianyzasok.Datum = bHianyzasok.Datum
FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,2,'') AS Hianyzas
INTO #hianyzasok
FROM #hianyzasokTMP Hianyzasok
SELECT DISTINCT
NapSorszama
,Datum
,HetSorszama
,HetNapja
,Oraszam
,STUFF((SELECT DISTINCT
' | ' + CAST(bmto.TantargyNev AS VARCHAR(max))
FROM #megtartottOrak bmto
WHERE
bmto.Datum = mto.Datum
AND bmto.Oraszam = mto.Oraszam
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,3,'') Tantargy
INTO #Orarend
FROM #megtartottOrak mto
SELECT DISTINCT
Datum
,1 Oraszam
,TantargyId
,STUFF((SELECT DISTINCT
' | ' + CAST(bmto.TemaOraSzammal AS VARCHAR(max))
FROM #megtartottOrak bmto
WHERE
bmto.Datum = mto.Datum
AND bmto.TantargyId = mto.TantargyId
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,3,'') Tema
INTO #1nap1TantargyTobbOra
FROM #megtartottOrak mto
DECLARE @tantargyak NVARCHAR(MAX)
DECLARE @tantargyakNevvel NVARCHAR(MAX)
SELECT @tantargyakNevvel = ISNULL(@tantargyakNevvel + ', ', '') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + '] AS [' + t.TantargyNev + ']',
@tantargyak = ISNULL(@tantargyak + ', ', '') + '[' + CAST(t.TantargyId AS NVARCHAR(MAX)) + ']'
FROM (SELECT DISTINCT TantargyId, TantargyNev FROM #megtartottOrak) t
DECLARE @sql NVARCHAR(MAX)
SET @sql = '
SELECT
Datum
,Oraszam
, ' + @tantargyak +'
INTO #naplo
FROM #1nap1TantargyTobbOra
PIVOT (MAX(Tema) FOR TantargyId IN (' + @tantargyak + ')) piv
SELECT DISTINCT
OsszesOra.Datum C_NAPDATUMA
,Hianyzas Mulasztas
,OsszesOra.Megjegyzes Megjegyzés
,OsszesOra.Oraszam ORASZAM
,Orarend.NapsorSzama T1ID
,Orarend.NapsorSzama T2ID
,Orarend.NapsorSzama T3ID
,Orarend.Tantargy TANTARGY
,OsszesOra.HetSorszama C_HETSORSZAMA
,OsszesOra.HetNapja C_HETNAPJA
,OsszesOra.Sorszam NapSorszama
,' + @tantargyakNevvel + '
FROM #OsszesOra OsszesOra
LEFT JOIN #Orarend Orarend ON Orarend.Datum = OsszesOra.Datum AND Orarend.Oraszam = OsszesOra.Oraszam
LEFT JOIN #naplo Naplo ON Naplo.Datum = OsszesOra.Datum AND Naplo.Oraszam = OsszesOra.Oraszam
LEFT JOIN #hianyzasok Hianyzasok ON Hianyzasok.Datum = OsszesOra.Datum
WHERE
OsszesOra.ORASZAM <=10
'
EXEC sp_executesql @sql
DROP TABLE #1nap1TantargyTobbOra
DROP TABLE #OsszesOra
DROP TABLE #hianyzasokTMP
DROP TABLE #hianyzasok
DROP TABLE #Orarend
END -- NORMÁL OSZTÁLYNAPLÓ
ELSE BEGIN -- SZÖVEGES OSZTÁLYNAPLÓ
SELECT
OsszesOra.Datum C_NAPDATUMA
,FORMAT(OsszesOra.Datum, 'dddd', 'hu-hu') Napneve
,'' C_MEGJEGYZES
,nh.C_HETKEZDONAPJA C_HETKEZDONAPJA
,nh.C_HETUTOLSONAPJA C_HETUTOLSONAPJA
,OsszesOra.HetSorszama C_HETSORSZAMA
,OsszesOra.Oraszam OraSorszam
,OsszesOra.Sorszam Napszam
,Tantargynev Tantargy
,PedagogusNev Tanar
,Tema Oraanyaga
,OraSorszam C_ORAEVESSORSZAM
INTO #szoveges
FROM #OsszesOra OsszesOra
LEFT JOIN #megtartottOrak mto ON mto.Datum = OsszesOra.Datum AND OsszesOra.Oraszam = mto.Oraszam
INNER JOIN T_NAPTARIHET_OSSZES nh ON OsszesOra.Datum BETWEEN nh.C_HETKEZDONAPJA AND nh.C_HETUTOLSONAPJA AND nh.C_TANEVID = @tanevId and nh.torolt='F'
SELECT DISTINCT c_napdatuma
, napneve
, c_megjegyzes
, c_hetkezdonapja
, c_hetutolsonapja
, c_hetsorszama
, orasorszam
, napszam
, STUFF((SELECT DISTINCT ' | ' + CAST(bszov.TANTARGY AS VARCHAR(max))
FROM #szoveges bszov
WHERE
bszov.C_NAPDATUMA=szov.C_NAPDATUMA
and bszov.ORASORSZAM=szov.ORASORSZAM
and bszov.napszam=szov.napszam
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,3,'') TANTARGY
, STUFF((SELECT DISTINCT ' | ' + CAST(bszov.TANAR AS VARCHAR(max))
FROM #szoveges bszov
WHERE
bszov.C_NAPDATUMA=szov.C_NAPDATUMA
and bszov.ORASORSZAM=szov.ORASORSZAM
and bszov.napszam=szov.napszam
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,3,'') TANAR
, STUFF((SELECT DISTINCT ' | ' + CAST(bszov.ORAANYAGA AS VARCHAR(max))
FROM #szoveges bszov
WHERE
bszov.C_NAPDATUMA=szov.C_NAPDATUMA
and bszov.ORASORSZAM=szov.ORASORSZAM
and bszov.napszam=szov.napszam
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,3,'') ORAANYAGA
, STUFF((SELECT DISTINCT ' | ' + CAST(bszov.C_ORAEVESSORSZAM AS VARCHAR(max))
FROM #szoveges bszov
WHERE
bszov.C_NAPDATUMA=szov.C_NAPDATUMA
and bszov.ORASORSZAM=szov.ORASORSZAM
and bszov.napszam=szov.napszam
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,3,'') OraEvesSorszama
FROM #szoveges szov
ORDER BY C_NAPDATUMA, orasorszam
/*Hiányzások*/
SELECT C_HETSORSZAMA, C_NYOMTATASINEV,
MAX([1]) AS [Hetfo], MAX([2]) AS [Kedd], MAX([3]) AS [Szerda],
MAX([4]) AS [Csutortok], MAX([5]) AS [Pentek], MAX([6]) AS [Szombat]
FROM (
SELECT C_HETSORSZAMA, C_NYOMTATASINEV, [0], [1], [2], [3], [4], [5], [6]
FROM (
SELECT DISTINCT n.C_NAPTARINAPID, DATEPART(dw,n.C_DATUM) AS NAP, t.C_NYOMTATASINEV, n.C_HETSORSZAMA,
'[' + STUFF((
SELECT ', ' + CAST(o.C_ORASZAM AS VARCHAR(3)) + IIF(tm.C_TIPUS = 1500, '', '(k)')
FROM T_TANULOMULASZTAS_OSSZES tm
INNER JOIN T_TANITASIORA_OSSZES o ON o.ID = tm.C_TANITASIORAKID
INNER JOIN #osztalycsoportok cs ON cs.OsztalyCsoportId = o.C_OSZTALYCSOPORTID
INNER JOIN #students s ON s.ID = tm.C_ORATANULOIID AND o.C_DATUM BETWEEN BelepesDatum AND KilepesDatum
WHERE n.C_NAPTARINAPID = o.C_NAPTARINAPID
AND m.C_ORATANULOIID = tm.C_ORATANULOIID
AND tm.C_TANEVID = @tanevId
and tm.torolt='F' and tm.c_intezmenyId=@intezmenyId and o.c_tanevId=@tanevId
ORDER BY o.C_NAPTARINAPID, o.C_ORASZAM
FOR XML PATH(''), TYPE).value('.', 'varchar(max)'),1,2,'') + '] ' + CAST(SUM(IIF(m.C_IGAZOLT = 'T', 1, 0)) AS varchar(2)) + '/' + CAST(SUM(IIF(m.C_IGAZOLT = 'T' OR m.C_TIPUS = 1499, 0, 1)) AS varchar(2)) AS hianyzas
FROM T_TANITASIORA_OSSZES n
INNER JOIN T_TANULOMULASZTAS_OSSZES m ON m.C_TANITASIORAKID = n.ID and m.torolt='F'
INNER JOIN #students s ON s.ID = m.C_ORATANULOIID AND n.C_DATUM BETWEEN BelepesDatum AND KilepesDatum
INNER JOIN #OsztalyVagyTanoraiCsoport cs ON cs.Id = n.C_OSZTALYCSOPORTID
INNER JOIN T_FELHASZNALO t ON t.ID = m.C_ORATANULOIID
WHERE
n.C_TANEVID = @tanevId
AND m.C_TANEVID = @tanevId
AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
GROUP BY n.C_NAPTARINAPID, C_ORATANULOIID, C_NYOMTATASINEV, n.C_HETSORSZAMA, n.C_DATUM) AS SUB
PIVOT
(
MAX(HIANYZAS)
FOR NAP IN ([0], [1], [2], [3], [4], [5], [6])
) AS PivotTable
) AS ASD
GROUP BY C_HETSORSZAMA, C_NYOMTATASINEV
ORDER BY C_HETSORSZAMA
END --SZÖVEGES OSZTÁLYNAPLÓ
/*TANULÓ adatai*/
DECLARE @NaploSorszam TABLE (
TanuloId INT
,Sorszam INT
)
INSERT INTO @NaploSorszam
EXEC [sp_GetDokumentumTanuloNaploSorszam]
@osztalyId = @osztalyId
SELECT DISTINCT
tanuloID
, sorszam
, torzslapSzam
, oktAzon
, tajSzam
, anyjaNeve
, szulHely
, CONVERT(NVARCHAR(100),DATEPART(YEAR,szulIdo))+'. '+CONVERT(NVARCHAR(100)
, datepart(month,szulIdo))+'. '+convert(nvarchar(100)
, datepart(day,szulIdo))+'.' SzulIdo
, gondviselok
, IIF(socAdat = '', '',
LEFT(socAdat, len(socAdat)- 1)) socAdat
, kepzes
, tanuloNeve
, allampolgarsaga
, diakIgazolvanySzam
, kilepesDatum
, beirasiNaploSorszam
FROM (
SELECT
t.ID AS tanuloID
, naploSorszam.Sorszam as sorszam
, f.C_NYILVANTARTASISZAM as torzslapSzam
,f.C_OKTATASIAZONOSITO as oktAzon
, f.C_TAJSZAM as tajSzam
, f.C_ANYJANEVE as anyjaNeve,
f.C_SZULETESIHELY AS szulHely
,f.C_SZULETESIDATUM as szulIdo
,IIF(t.C_MAGANTANULO = 'T', 'Magántanuló (eü. ok), ', '') +
IIF(t.C_JOGVISZONYATSZUNETELTETO = 'T', 'Jogviszony szüneteltetve, ', '') +
IIF(t.C_SZAKMAIGYAKORLATON = 'T', 'Szakmai gyakorlat, ', '') +
IIF(t.C_SZOCIALISTAMOGATAS = 'T', 'Szociális támogatás, ', '') AS socAdat,
tt.C_NEV as kepzes,
STUFF((
SELECT char(13) + char(10) + gv.C_NEV
FROM T_GONDVISELO_OSSZES gv
WHERE gv.C_TANULOID = s.ID
AND gv.TOROLT = 'F'
FOR XML PATH(''), TYPE).value('.', 'nvarchar(4000)'),1,2,'') AS gondviselok,
f.C_NYOMTATASINEV as tanuloNeve,
d.C_NAME allampolgarsaga,
t.C_DIAKIGAZOLVANYSZAM diakIgazolvanySzam,
MAX(cs.C_KILEPESDATUM) kilepesDatum,
t.C_BEIRASINAPLOSORSZAM beirasiNaploSorszam
FROM T_TANULO_OSSZES t
INNER JOIN #students s ON s.ID = t.ID
INNER JOIN @NaploSorszam naploSorszam on naploSorszam.TanuloId=s.ID
INNER JOIN T_TANTERV_OSSZES tt ON tt.ID = t.C_TANTERVID
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = t.ID
INNER JOIN T_TANULOCSOPORT_OSSZES cs ON s.ID = cs.C_TANULOID AND cs.C_OSZTALYCSOPORTID = @osztalyId
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d on d.id=f.C_ALLAMPOLGARSAGA AND d.C_TANEVID = f.C_TANEVID AND d.C_INTEZMENYID = f.C_INTEZMENYID
WHERE t.TOROLT='F'
GROUP BY
s.ID, t.ID, naploSorszam.Sorszam, f.C_NYILVANTARTASISZAM, f.C_OKTATASIAZONOSITO, f.C_TAJSZAM, f.C_ANYJANEVE,
f.C_SZULETESIHELY, f.C_SZULETESIDATUM, t.C_MAGANTANULO, t.C_JOGVISZONYATSZUNETELTETO, t.C_SZAKMAIGYAKORLATON,
t.C_SZOCIALISTAMOGATAS, tt.C_NEV, f.C_NYOMTATASINEV, d.C_NAME, t.C_DIAKIGAZOLVANYSZAM, t.C_BEIRASINAPLOSORSZAM
) tbl
ORDER BY tanuloNeve
/*TANULÓ elérhetőségei */
SELECT DISTINCT
tanulo.Id tanuloID
, cimTipus
, cim.OsszetettCim cim
, telefon.Telefonszam
, email.Email
, cim.ct
FROM #students Tanulo
LEFT JOIN (SELECT
c.C_FELHASZNALOID Tanulo
, c.C_IRANYITOSZAM+', '+c.C_VAROS+', '+C_KOZTERULET+' '+kozteruletJellege.C_NAME+' '+C_HAZSZAM OsszetettCim
, cimTipus.C_NAME cimTipus
, cimTipus.Id ct
FROM T_CIM_OSSZES c
INNER JOIN (SELECT DISTINCT ID, C_NAME FROM T_DICTIONARYITEMBASE_OSSZES d) kozteruletJellege ON kozteruletJellege.Id=c.c_kozteruletjellege
INNER JOIN (SELECT DISTINCT ID, C_NAME FROM T_DICTIONARYITEMBASE_OSSZES d) cimTipus ON cimTipus.Id=c.C_CIMTIPUSA
WHERE c.TOROLT='F' AND c.C_GONDVISELOID IS NULL) cim ON cim.Tanulo=Tanulo.Id
LEFT JOIN (SELECT
C_FELHASZNALOID Tanulo
, C_TELEFONSZAM Telefonszam
FROM T_TELEFON_OSSZES
WHERE TOROLT='F'
AND C_ALAPERTELMEZETT='T') telefon on telefon.Tanulo=Tanulo.Id
LEFT JOIN (SELECT C_FELHASZNALOID Tanulo
, C_EMAILCIM Email
FROM T_EMAIL_OSSZES
WHERE Torolt='F'
AND C_ALAPERTELMEZETT='T') email ON email.Tanulo=Tanulo.Id
/* TANULÓ mentesség */
SELECT s.ID tanuloId
,ROW_NUMBER() OVER(PARTITION BY s.ID ORDER BY s.ID) sorszam
, mentesseg.tantargyNev
, mentesseg.mentessegOka
, ISNULL(IIF(mentesseg = '', ''
, LEFT(mentesseg, LEN(mentesseg)- 1)),' ') mentesseg
FROM #students s
LEFT JOIN (SELECT DISTINCT
mentesseg.C_TANULOID tanuloId
, IIF(t.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + t.C_NEV + ')', t.C_NEV) tantargyNev
, mentesseg.C_MENTESSEGOKA mentessegOka
, IIF(mentesseg.C_ERTEKELESMENTESITES = 'T', 'Értékelésmentesség, ', '') + IIF(mentesseg.C_ORAMENTESITES = 'T', 'Óramentesség, ', '') as mentesseg
FROM T_TANULOMENTESSEG_OSSZES mentesseg
INNER JOIN T_TANTARGY_OSSZES t on t.ID=mentesseg.C_TANTARGYID
INNER JOIN #students s ON s.ID = mentesseg.C_TANULOID AND mentesseg.C_KEZDETE BETWEEN BelepesDatum AND KilepesDatum
WHERE
mentesseg.TOROLT='F'
AND mentesseg.C_TANEVID=@tanevId
) mentesseg ON s.ID=mentesseg.TANULOID
/* TANULÓ határozatok */
SELECT
s.ID as tanuloID
, ROW_NUMBER() OVER(PARTITION BY s.ID ORDER BY s.ID) AS sorszam
, FORMAT(Datum, 'd', 'hu-hu') as datum
, d.C_NAME as tipus
, Tartalom as tartalom
, FeljegyzoNeve as tanar
FROM #students s
LEFT JOIN fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) feljegyzes ON feljegyzes.TanuloId = s.ID AND feljegyzes.Datum BETWEEN BelepesDatum AND KilepesDatum
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = Tipusa AND d.C_TANEVID = @tanevId
WHERE
Tipusa IN (1543, 1544, 1547, 1548, 1549, 1550, 1551, 1552, 1553)
/* TANULÓ feljegyzései */
SELECT
s.ID as tanuloID
, ROW_NUMBER() OVER(PARTITION BY s.ID ORDER BY s.ID) AS sorszam
, FORMAT(Datum, 'd', 'hu-hu') as datum
, d.C_NAME as tipus
, Tartalom as tartalom
, FeljegyzoNeve as tanar
FROM #students s
LEFT JOIN fnGetDokumentumTanulokFeljegyzesei(@tanevId, @osztalyId) feljegyzes ON feljegyzes.TanuloId = s.ID AND feljegyzes.Datum BETWEEN BelepesDatum AND KilepesDatum
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = Tipusa AND d.C_TANEVID = @tanevId
WHERE
Tipusa IN
(
6315
,5450
,5421
,6312
,5460
,6313
,6314
,6319
,6316
,6317
,6318
,5456
,5467
,5468
,5469
,5457
,6323
,6320
,6321
,6322
,5473
,5458
,5470
,5471
,5472
,5454
,5461
,5462
,5463
,5459
,5455
,5464
,5465
,5466
,5453
,1546
,6326
,6327
,6328
,5452
,1537
,1536
,1538
,1539
,1535
,1541
,6491
,1540
,1542
,1553
,1545
,5477
,5478
,5476
,5474
,5475
,5479
,5481
,5480
)
/* TANULO mulasztása */
DECLARE @Mulasztasok TABLE ( IgazoltE nvarchar(1), Tanulo int, Tipus int)
--Félév kezdete
DECLARE @FelevVege DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES tr WHERE C_NAPTIPUSA = 1400 AND C_TANEVID=@tanevId AND TOROLT = 'F')
SELECT
DATEPART(MONTH,tao.C_DATUM) Honap
,tm.ID Id
,C_IGAZOLT IgazoltE
,tm.C_ORATANULOIID TanuloId
,C_IGAZOLASTIPUSA IgazolasTipus
,C_DATUM Datum
,C_TIPUS Tipus
,C_KESESPERCBEN KesesPercben
INTO #mulasztasTmp
FROM T_TANULOMULASZTAS_OSSZES tm
INNER JOIN T_TANITASIORA_OSSZES tao ON tao.ID = tm.C_TANITASIORAKID
INNER JOIN #students tanulok ON tanulok.ID = tm.C_ORATANULOIID AND (tao.C_DATUM BETWEEN BelepesDatum AND KilepesDatum OR KilepesDatum IS NULL)
INNER JOIN #OsztalyVagyTanoraiCsoport ocs ON ocs.ID = tao.C_OSZTALYCSOPORTID
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = tao.C_OSZTALYCSOPORTID and tanulok.ID = tcs.C_TANULOID
WHERE
tm.TOROLT = 'F'
AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA <> 1533 OR C_IGAZOLASTIPUSA IS NULL))
AND tcs.C_BELEPESDATUM <= tao.C_DATUM
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > tao.C_DATUM)
INSERT INTO @Mulasztasok
SELECT 'T', ID, Tipus FROM #students
CROSS JOIN (SELECT DISTINCT Id FROM T_DICTIONARYITEMBASE_OSSZES WHERE C_TANEVID = @tanevId AND C_TYPE LIKE 'igazolastipus' AND (@iskolaErdekuSzamit = 1 OR Id <> 1533) ) Tipus (Tipus)
SELECT Mulasztas.tanuloid, Mulasztas.tipus, Mulasztas.[09.], Mulasztas.[10.], Mulasztas.[11.], Mulasztas.[12.],
Mulasztas.[01.], Mulasztas.[02.], Mulasztas.[03.], Mulasztas.[04.], Mulasztas.[05.], Mulasztas.[06.],
mulasztas.felev felev, isnull(Mulasztas.osszesen,0) Osszesen, mulasztas.Rendez
FROM
(
--hiányzás
--különböző típusok
SELECT m.Tanulo tanuloid, '-'+d.c_name tipus,
isnull(p.[9],0) '09.', isnull(p.[10],0) '10.', isnull(p.[11],0) '11.', isnull(p.[12],0) '12.',
isnull(p.[1],0) '01.', isnull(p.[2],0) '02.', isnull(p.[3],0) '03.', isnull(p.[4],0) '04.', isnull(p.[5],0) '05.', isnull(p.[6],0) '06.',
isnull(Felev,0) 'felev', [9]+[10]+[11]+[12]+[1]+[2]+[3]+[4]+[5]+[6] 'osszesen', d.id Rendez
FROM @Mulasztasok m
LEFT JOIN (SELECT * FROM (SELECT TanuloId, Honap, Id, IgazolasTipus, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (COUNT(ID) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv
)p ON p.TanuloId=m.Tanulo AND p.igazoltE = m.IgazoltE AND p.Tipus = m.Tipus
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.id = m.Tipus AND d.TOROLT = 'F' AND d.C_TANEVID = @tanevId
LEFT JOIN (SELECT COUNT(Id) Felev, IgazoltE, TanuloId Tanulo, IgazolasTipus FROM #mulasztasTmp WHERE Datum <= @FelevVege GROUP BY IgazoltE, TanuloId, IgazolasTipus
)felev ON felev.tanulo=m.Tanulo AND felev.igazoltE=m.IgazoltE AND felev.IgazolasTipus=m.Tipus
UNION
--Összes
SELECT s.id, 'mulasztás',
isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.',
isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.',
isnull(Felev,0) 'felev', [9]+[10]+[11]+[12]+[1]+[2]+[3]+[4]+[5]+[6] 'osszesen', 1 Rendez
FROM #students s
LEFT JOIN (SELECT * FROM (SELECT Id, TanuloId, Honap FROM #mulasztasTmp WHERE IgazoltE IN ('T', 'F') AND Tipus = 1500) a PIVOT (COUNT(ID) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv )ni on ni.TanuloId=s.Id
LEFT JOIN (SELECT COUNT(Id) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE IN ('T', 'F') AND Tipus = 1500 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id
UNION
--igazolt
SELECT s.id, 'igazolt',
isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.',
isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.',
isnull(Felev,0) 'felev', [9]+[10]+[11]+[12]+[1]+[2]+[3]+[4]+[5]+[6] 'osszesen', 2 Rendez
FROM #students s
LEFT JOIN (SELECT * FROM (SELECT Id, Honap, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (COUNT(ID) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv WHERE IgazoltE = 'T' AND Tipus = 1500 )ni on ni.TanuloId=s.Id
LEFT JOIN (SELECT COUNT(Id) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'T' AND Tipus = 1500 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id
UNION
--igazolatlan
SELECT s.id, 'igazolatlan',
isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.',
isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.',
isnull(Felev,0) 'felev', [9]+[10]+[11]+[12]+[1]+[2]+[3]+[4]+[5]+[6] 'osszesen', 4999 Rendez
FROM #students s
LEFT JOIN (SELECT * FROM (SELECT Id, Honap, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (COUNT(ID) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv WHERE IgazoltE = 'F' AND Tipus = 1500 )ni on ni.TanuloId=s.Id
LEFT JOIN (SELECT COUNT(Id) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'F' AND Tipus = 1500 AND Datum <= @FelevVege GROUP BY TanuloId, IgazolasTipus) felev on felev.TanuloId=s.id
--késés
UNION
SELECT s.ID, 'késés (p)',
isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.',
isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.',
isnull(Felev,0) 'felev',
isnull(ni.[9],0)+isnull(ni.[10],0)+isnull(ni.[11],0)+isnull(ni.[12],0)+ isnull(ni.[1],0)+
isnull(ni.[2],0)+isnull(ni.[3],0)+isnull(ni.[4],0)+isnull(ni.[5],0)+isnull(ni.[6],0)
'osszesen', 5000 Rendez
FROM #students s
LEFT JOIN (SELECT * FROM (SELECT KesesPercben, Honap, TanuloId FROM #mulasztasTmp WHERE IgazoltE IN ('T', 'F') AND Tipus = 1499) a PIVOT (SUM(KesesPercben) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv)ni on ni.TanuloId=s.Id
LEFT JOIN (SELECT SUM(KesesPercben) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE IN ('T', 'F') AND Tipus = 1499 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id
UNION
--igazolt
select s.id, '* igazolt (p)',
isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.',
isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.',
isnull(Felev,0) 'felev',
isnull(ni.[9],0)+isnull(ni.[10],0)+isnull(ni.[11],0)+isnull(ni.[12],0)+ isnull(ni.[1],0)+
isnull(ni.[2],0)+isnull(ni.[3],0)+isnull(ni.[4],0)+isnull(ni.[5],0)+isnull(ni.[6],0)'osszesen', 5001 Rendez
from #students s
LEFT JOIN (SELECT * FROM (SELECT KesesPercben, Honap, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (SUM(KesesPercben) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv WHERE IgazoltE = 'T' AND Tipus = 1499)ni on ni.TanuloId=s.Id
LEFT JOIN (SELECT SUM(KesesPercben) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'T' AND Tipus = 1499 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id
UNION
--igazolatlan
select s.id, '* igazolatlan (p)',
isnull(ni.[9],0) '09.', isnull(ni.[10],0) '10.', isnull(ni.[11],0) '11.', isnull(ni.[12],0) '12.',
isnull(ni.[1],0) '01.', isnull(ni.[2],0) '02.', isnull(ni.[3],0) '03.', isnull(ni.[4],0) '04.', isnull(ni.[5],0) '05.', isnull(ni.[6],0) '06.',
isnull(Felev,0) 'felev',
isnull(ni.[9],0)+isnull(ni.[10],0)+isnull(ni.[11],0)+isnull(ni.[12],0)+ isnull(ni.[1],0)+
isnull(ni.[2],0)+isnull(ni.[3],0)+isnull(ni.[4],0)+isnull(ni.[5],0)+isnull(ni.[6],0) 'osszesen', 5002 Rendez
from #students s
LEFT JOIN (SELECT * FROM (SELECT KesesPercben, Honap, TanuloId, IgazoltE, Tipus FROM #mulasztasTmp) a PIVOT (SUM(KesesPercben) FOR Honap IN ([9], [10], [11], [12], [1], [2], [3], [4], [5], [6]))piv WHERE IgazoltE = 'F' AND Tipus = 1499)ni on ni.TanuloId=s.Id
LEFT JOIN (SELECT SUM(KesesPercben) Felev, TanuloId FROM #mulasztasTmp WHERE IgazoltE = 'F' AND Tipus = 1499 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id
)Mulasztas
order by Rendez
declare @gondviselok table (Id int)
insert into @gondviselok
select g.ID from #students s
left join T_GONDVISELO_OSSZES g on g.C_TANULOID=s.id
/*gondviselő elérhetőségei */
SELECT
s.Id Id
, g.c_nev C_NEV
, cim.cimTipus C_CIMTIPUSA
, cim.OsszetettCim+' ('+cim.cimTipus+')' C_OSSZETETTCIM
, telefon.Telefonszam C_TELEFONSZAM
, email.Email C_EMAILCIM
FROM #students s
LEFT JOIN T_GONDVISELO_OSSZES g on g.c_tanuloid=s.id
LEFT JOIN (SELECT
c.c_gondviseloid Gondviselo
, c.C_IRANYITOSZAM+', '+c.C_VAROS+', '+c_kozterulet+' '+kozteruletJellege.c_name+' '+c_hazszam OsszetettCim
, cimTipus.c_name cimTipus
FROM T_CIM_OSSZES c
INNER JOIN (SELECT DISTINCT ID, C_NAME FROM T_DICTIONARYITEMBASE_OSSZES d) kozteruletJellege ON kozteruletJellege.Id=c.C_KOZTERULETJELLEGE
INNER JOIN (SELECT DISTINCT ID, C_NAME FROM T_DICTIONARYITEMBASE_OSSZES d) cimTipus ON cimTipus.Id=c.c_cimtipusa
WHERE c.TOROLT='F' and c.C_GONDVISELOID IN (SELECT ID FROM @gondviselok)) cim ON cim.Gondviselo=g.Id
LEFT JOIN (SELECT C_GONDVISELOID Gondviselo, C_TELEFONSZAM Telefonszam FROM T_TELEFON_OSSZES WHERE TOROLT='F' ) telefon ON telefon.Gondviselo=g.Id
LEFT JOIN (SELECT C_GONDVISELOID Gondviselo, C_EMAILCIM Email from T_EMAIL_OSSZES where TOROLT='F') email ON email.Gondviselo=g.Id
/*TANULÓ osztályzatai*/
IF @fuggolegesTantargyak = 1
BEGIN
SET @pivotList = null;
SET @selectList = null;
SET @sql = null;
DECLARE @columnList nvarchar(max);
SELECT
@pivotList = ISNULL(@pivotList + ', ', '') + '[' + CAST(t.TantargyId AS varchar(6)) + ']',
@selectList = ISNULL(@selectList + ', ', '') + '[' + CAST(t.TantargyId AS varchar(6)) + '] AS [' + t.TantargyNev + ']',
@columnList = ISNULL(@columnList + ', ', '') + '[' + CAST(t.TantargyId AS varchar(6)) + '] nvarchar(250) '
FROM (
SELECT DISTINCT TantargyId, TantargyNev FROM #megtartottOrak) t
SET @sql = '
DECLARE @masodikFelev datetime
SELECT TOP 1 @masodikFelev = DATEADD(d, 1, C_DATUM)
FROM T_TANEVRENDJE_OSSZES
WHERE T_TANEVRENDJE_OSSZES.TOROLT=''F'' AND C_NAPTIPUSA= 1400 --Első félév vége
and torolt=''F'' and c_intezmenyId=@intezmenyId
DECLARE @idoszak TABLE (
id int primary key,
period varchar(10),
startdate datetime,
enddate datetime
)
INSERT INTO @idoszak (
id
,period
,startdate
,enddate
) SELECT
ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS id
,IIF(MONTH(n.C_NAPDATUMA) <> 1, CAST(FORMAT(C_NAPDATUMA, ''MM'') AS varchar(2)) + ''.'', ''1/I'') AS period
,DATEFROMPARTS ( YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA), 1 ) AS startdate
,IIF(MONTH(n.C_NAPDATUMA) = 1,
@masodikFelev,
DATEADD(m, 1, DATEFROMPARTS ( YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA), 1 ))
) AS enddate
FROM T_NAPTARINAP_OSSZES n
INNER JOIN T_TANEV_OSSZES te ON te.ID = n.C_TANEVID
WHERE
MONTH(n.C_NAPDATUMA) IN (1, 9, 10, 11, 12)
AND n.C_TANEVID = @tanevId
GROUP BY YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA), FORMAT(C_NAPDATUMA, ''MM'')
ORDER BY YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA)
INSERT INTO @idoszak (
id
,period
,startdate
,enddate
) SELECT
6 + ROW_NUMBER() OVER(ORDER BY (SELECT 1)) AS id
,IIF(MONTH(n.C_NAPDATUMA) <> 1, CAST(FORMAT(C_NAPDATUMA, ''MM'') AS varchar(2)) + ''.'', ''1/II'') AS period
,IIF(MONTH(n.C_NAPDATUMA) = 1, @masodikFelev, DATEFROMPARTS ( YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA), 1 )) AS startdate
,DATEADD(m, 1, DATEFROMPARTS (YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA), 1 )) AS enddate
FROM T_NAPTARINAP_OSSZES n
INNER JOIN T_TANEV_OSSZES te ON te.ID = n.C_TANEVID
WHERE
MONTH(n.C_NAPDATUMA) BETWEEN 1 AND 6
AND n.C_TANEVID = @tanevId
GROUP BY YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA), FORMAT(C_NAPDATUMA, ''MM'')
ORDER BY YEAR(n.C_NAPDATUMA), MONTH(n.C_NAPDATUMA)
INSERT INTO @idoszak (id, period) VALUES
(6, ''Félév''), (13, ''Év vége'')
DECLARE @jegyek TABLE (
periodId int,
tanuloId int
' + ISNULL(',' + @columnList, '') + '
)
INSERT INTO @jegyek
SELECT id, tanuloID, ' + @pivotList + '
FROM (
SELECT i.id, e.C_TANULOID AS tanuloID, e.C_TANTARGYID as tantargyID,
STUFF((
SELECT '', '' + ISNULL(CAST (C_SZAZALEK AS varchar(5)) + ''%'', CAST(sd.C_VALUE AS varchar(5)))
FROM @idoszak si
LEFT JOIN T_TANULOERTEKELES_OSSZES se ON se.C_ERTEKELESDATUM >= si.startdate AND se.C_ERTEKELESDATUM < si.enddate and se.torolt=''F'' and se.c_tanevId=@tanevId
AND se.C_TANTARGYID = e.C_TANTARGYID
AND se.C_ERTEKELESTIPUSA = e.C_ERTEKELESTIPUSA
AND se.C_TANULOID = e.C_TANULOID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES sd ON sd.ID = se.C_OSZTALYZAT AND sd.C_TANEVID=se.C_TANEVID AND sd.C_INTEZMENYID=se.C_INTEZMENYID
LEFT JOIN T_OSZTALYZATERTEKELES_OSSZES oe ON oe.ID=SE.ID AND C_SZAZALEK IS NOT NULL
WHERE
i.ID = si.ID
AND C_ERTEKELESDATUM >= BelepesDatum AND (C_ERTEKELESDATUM <= KilepesDatum OR KilepesDatum IS NULL)
FOR XML PATH(''''), TYPE).value(''.'', ''varchar(max)''), 1, 2, '''') AS Osztalyzat
FROM T_TANULOERTEKELES_OSSZES e
INNER JOIN #students s ON s.id = e.C_TANULOID
INNER JOIN @idoszak i ON e.C_ERTEKELESDATUM >= i.startdate AND e.C_ERTEKELESDATUM < i.enddate
WHERE
e.C_ERTEKELESTIPUSA = 1518 /* Évközi jegy/értékelés */
AND C_ERTEKELESDATUM >= BelepesDatum AND (C_ERTEKELESDATUM <= KilepesDatum OR KilepesDatum IS NULL)
AND e.c_tanevId=@tanevId
AND e.TOROLT = ''F''
GROUP BY e.C_TANULOID, e.C_TANTARGYID, e.C_ERTEKELESTIPUSA, i.id, BelepesDatum, KilepesDatum
UNION ALL
SELECT
IIF(e.C_ERTEKELESTIPUSA = 1519, 6, 13)
,e.C_TANULOID
,e.C_TANTARGYID
,CAST(MIN(d.C_VALUE) AS varchar(1))
FROM #students s
INNER JOIN T_TANULOERTEKELES_OSSZES e ON e.C_TANULOID = s.id AND e.C_ERTEKELESTIPUSA IN (1519, 1520)
INNER JOIN (select distinct id, c_tanevid, c_value from T_DICTIONARYITEMBASE_OSSZES) d ON d.id = e.C_OSZTALYZAT AND d.C_TANEVID = e.C_TANEVID
WHERE
e.TOROLT=''F''
AND C_ERTEKELESDATUM >= BelepesDatum AND (C_ERTEKELESDATUM <= KilepesDatum OR KilepesDatum IS NULL)
GROUP BY e.C_TANULOID, e.C_TANTARGYID, e.C_ERTEKELESTIPUSA
) asd
PIVOT (
MAX(Osztalyzat)
FOR tantargyID IN (' + @pivotList + ')
) AS pvt
SELECT p.id AS periodusId, p.period AS periodusNev, s.id tanuloID, msz.mag Magatartás, msz.szorg Szorgalom, ' + @selectList + '
FROM @idoszak p
CROSS JOIN #students s
LEFT JOIN (
SELECT i.id as periodusId, s.id tanuloID, m.C_NAME mag, sz.C_NAME szorg
FROM T_TANULOERTEKELES_OSSZES e
INNER JOIN T_OSZTALYFONOKIERTEKELES_OSSZES oe on oe.ID = e.id and oe.torolt=''F'' --and oe.c_alintezmenyId=@intezmenyId and oe.c_altanevId=@tanevId
INNER JOIN T_DICTIONARYITEMBASE_OSSZES m ON m.ID = oe.C_MAGATARTAS AND m.C_TANEVID = oe.C_ALTANEVID
INNER JOIN T_DICTIONARYITEMBASE_OSSZES sz ON sz.id = oe.C_SZORGALOM AND sz.C_TANEVID = oe.C_ALTANEVID
INNER JOIN @idoszak i ON e.C_ERTEKELESDATUM >= i.startdate AND e.C_ERTEKELESDATUM < i.enddate
INNER JOIN #students s ON s.id = e.C_TANULOID
WHERE
e.C_ERTEKELESTIPUSA = 1518
AND e.torolt=''F''
AND e.c_intezmenyId=@intezmenyId
AND e.c_tanevId=@tanevId
AND C_ERTEKELESDATUM >= BelepesDatum AND (C_ERTEKELESDATUM <= KilepesDatum OR KilepesDatum IS NULL)
GROUP BY i.id, s.id, m.C_NAME, sz.C_NAME
UNION ALL
SELECT IIF(e.C_ERTEKELESTIPUSA = 1519, 6, 13), e.C_TANULOID, ISNULL(m.C_NAME, ISNULL(e.C_ERTEKELESSZOVEG, mJEGY.C_NAME)) mag, ISNULL(sz.C_NAME, ISNULL(e.C_ERTEKELESSZOVEG, szJEGY.C_NAME)) szorg
FROM T_TANULOERTEKELES_OSSZES e
INNER JOIN #students s ON e.C_TANULOID = s.id AND e.C_ERTEKELESTIPUSA IN (1519, 1520)
INNER JOIN T_OSZTALYFONOKIERTEKELES_OSSZES oe on oe.ID = e.id and oe.torolt=''F'' and oe.c_alintezmenyId=@intezmenyId and oe.c_altanevId=@tanevId
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES m ON m.ID = oe.C_MAGATARTAS AND m.C_TANEVID = oe.C_ALTANEVID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES sz ON sz.id = oe.C_SZORGALOM AND sz.C_TANEVID = oe.C_ALTANEVID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES mJEGY ON mJEGY.ID=e.C_OSZTALYZAT AND mJEGY.C_TANEVID = @tanevId
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES szJEGY ON szJEGY.ID=e.C_OSZTALYZAT AND szJEGY.C_TANEVID = @tanevId
WHERE
e.C_ERTEKELESTIPUSA IN (1519, 1520)
AND C_ERTEKELESDATUM >= BelepesDatum AND (C_ERTEKELESDATUM <= KilepesDatum OR KilepesDatum IS NULL)
AND e.TOROLT=''F''
GROUP BY e.C_ERTEKELESTIPUSA, e.C_TANULOID, m.C_NAME, e.C_ERTEKELESSZOVEG, mJEGY.C_NAME, sz.C_NAME, szJEGY.C_NAME
) msz ON msz.periodusId = p.id AND msz.tanuloID = s.id
LEFT JOIN @jegyek tbl ON tbl.periodId = p.ID AND tbl.tanuloID = s.id
ORDER BY s.id, p.id'
IF (@pivotList IS NULL)
BEGIN
SELECT 0 AS tanuloId
END
ELSE
BEGIN
EXEC sp_executesql @sql, N'@osztaly int, @intezmenyId int, @tanevId int', @osztalyId, @intezmenyId, @tanevId
END
END
ELSE
BEGIN
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
,Magatartas Ertekeles
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
Magatartas IS NOT NULL
AND Tipusa = 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
,Szorgalom
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
Szorgalom IS NOT NULL
AND Tipusa = 1518
UNION ALL
SELECT
'Szorgalom'
,15 Honap
,TanuloId
,Szorgalom
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
Szorgalom IS NOT NULL
AND Tipusa = 1519
UNION ALL
SELECT
'Magatartás'
,15 Honap
,TanuloId
,Magatartas
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
Magatartas IS NOT NULL
AND Tipusa = 1519
UNION ALL
SELECT
'Szorgalom'
,16 Honap
,TanuloId
,Szorgalom
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
Szorgalom IS NOT NULL
AND Tipusa = 1520
UNION ALL
SELECT
'Magatartás'
,16 Honap
,TanuloId
,Magatartas
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
Magatartas IS NOT NULL
AND Tipusa = 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
,CONVERT(NVARCHAR(MAX),Osztalyzat)
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
Magatartas IS NULL
AND TantargyId IS NULL
AND Tipusa = 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
,CONVERT(NVARCHAR(MAX),Osztalyzat)
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
Szorgalom IS NULL
AND TantargyId IS NULL
AND Tipusa = 1518
UNION ALL
SELECT
'Magatartás' Tipus
,15 Honap
,TanuloId
,CONVERT(NVARCHAR(MAX),Osztalyzat)
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
Magatartas IS NULL
AND TantargyId IS NULL
AND Tipusa = 1519
UNION ALL
SELECT
'Szorgalom' Tipus
,15 Honap
,TanuloId
,CONVERT(NVARCHAR(MAX),Osztalyzat)
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
Szorgalom IS NULL
AND TantargyId IS NULL
AND Tipusa = 1519
UNION ALL
SELECT
'Magatartás' Tipus
,16 Honap
,TanuloId
,CONVERT(NVARCHAR(MAX),Osztalyzat)
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
Magatartas IS NULL
AND TantargyId IS NULL
AND Tipusa = 1520
UNION ALL
SELECT
'Szorgalom' Tipus
,16 Honap
,TanuloId
,CONVERT(NVARCHAR(MAX),Osztalyzat)
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
Szorgalom IS NULL
AND TantargyId IS NULL
AND Tipusa = 1520
)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
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),Osztalyzat), Szazalek) Ertekeles
,TargyKategoriaId Rendez
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
TantargyId IS NOT NULL
AND SzovegesErtekeles IS NULL
AND Tipusa = 1518
UNION ALL
SELECT
15 Honap
,TanuloId
,TantargyId
,ISNULL(CONVERT(NVARCHAR(MAX),Osztalyzat), Szazalek) Ertekeles
,TargyKategoriaId
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
TantargyId IS NOT NULL
AND SzovegesErtekeles IS NULL
AND Tipusa = 1519
UNION ALL
SELECT
16 Honap
,TanuloId
,TantargyId
,ISNULL(CONVERT(NVARCHAR(MAX),Osztalyzat), Szazalek) Ertekeles
,TargyKategoriaId
FROM fnGetDokumentumErtekelesekOsztalyonkent(@tanevid, @osztalyid)
WHERE
TantargyId IS NOT NULL
AND SzovegesErtekeles IS NULL
AND Tipusa = 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
INTO #jegyek
FROM #jegyekTMP j
SELECT * FROM
(SELECT *
FROM #magatartasSzorgalom
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 #jegyek
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
DROP TABLE #jegyekTMP
DROP TABLE #jegyek
DROP TABLE #magatartasSzorgalomTMP
DROP TABLE #magatartasSzorgalom
END
/* TANULÓ záradékai */
SELECT
students.ID tanuloId
,tanuloCsoport.C_ZARADEK zaradek
FROM #students students
INNER JOIN T_TANULOCSOPORT_OSSZES tanuloCsoport on students.ID = tanuloCsoport.C_TANULOID
WHERE
tanuloCsoport.C_OSZTALYCSOPORTID = @osztalyId
AND TOROLT = 'F'
/*Szöveges minősítések*/
SELECT * FROM
(
SELECT
s.id tanuloId
,szoveges.Honap
,szoveges.Tantargy
,szoveges.Ertekeles
,szoveges.Tipus
FROM #students s
LEFT JOIN (SELECT
C_TANULOID tanuloId
,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, C_ERTEKELESDATUM))+'. hónap]' Honap
,IIF(t.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN + ' (' + t.C_NEV + ')', t.C_NEV) Tantargy
,C_ERTEKELESSZOVEG Ertekeles
,C_NAME Tipus
FROM T_TANULOERTEKELES_OSSZES te
INNER JOIN T_TANTARGY_OSSZES t ON t.ID=te.C_TANTARGYID
INNER JOIN #students s ON s.ID = C_TANULOID AND te.C_ERTEKELESDATUM BETWEEN s.BelepesDatum AND s.KilepesDatum
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = te.C_ERTEKELESTIPUSA AND d.C_TANEVID = @tanevId AND d.TOROLT = 'F'
WHERE
C_ERTEKELESSZOVEG IS NOT NULL
AND te.C_TANEVID=@tanevId
AND te.TOROLT='F'
) szoveges on szoveges.TANULOID=s.Id
UNION
SELECT
s.id tanuloId
,szoveges.Honap
,szoveges.Tantargy
,szoveges.Ertekeles
,szoveges.Tipus
FROM #students s
LEFT JOIN (SELECT
C_TANULOID tanuloId
,'['+CONVERT(NVARCHAR(MAX),DATEPART(MONTH, C_ERTEKELESDATUM))+'. hónap]' Honap
,'Magatartás / szorgalom' Tantargy
,C_ERTEKELESSZOVEG Ertekeles
,C_NAME Tipus
FROM T_TANULOERTEKELES_OSSZES te
INNER JOIN T_OSZTALYFONOKIERTEKELES_OSSZES oe ON oe.Id = te.Id
INNER JOIN #students s ON s.ID = C_TANULOID AND te.C_ERTEKELESDATUM BETWEEN s.BelepesDatum AND s.KilepesDatum
INNER JOIN T_DICTIONARYITEMBASE_OSSZES d ON d.ID = te.C_ERTEKELESTIPUSA AND d.C_TANEVID = @tanevId AND d.TOROLT = 'F'
WHERE
C_ERTEKELESSZOVEG IS NOT NULL
AND te.C_TANEVID=@tanevId
AND te.TOROLT='F'
) szoveges on szoveges.TANULOID=s.Id
)a
ORDER BY Honap, Tantargy
DROP TABLE #students
DROP TABLE #osztalycsoportok
DROP TABLE #OsztalyVagyTanoraiCsoport
DROP TABLE #megtartottOrak
DROP TABLE #OraSorszam
DROP TABLE #mulasztasTmp
END
GO