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

1341 lines
No EOL
48 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,
@aktivTanevId INT,
@isReszletesMulasztasok 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 @isVegzos VARCHAR(1) = (SELECT TOP 1 C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyId)
DECLARE @VegzosUtolsoNap DATE = (SELECT TOP 1 C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_TANEVID = @tanevId AND C_NAPTIPUSA = 1402 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
DECLARE @NaploSorszam TABLE (
TanuloId INT
,Sorszam INT
)
INSERT INTO @NaploSorszam
EXEC [sp_GetDokumentumTanuloNaploSorszam]
@osztalyId = @osztalyId
CREATE TABLE #students (ID INT PRIMARY KEY, BelepesDatum DATE, KilepesDatum DATE, NaploSorszam INT)
INSERT INTO #students
SELECT
t.TanuloId
,BelepesDatum
,ISNULL(KilepesDatum, GETDATE())
,nsz.Sorszam
FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @osztalyId, 'T') t
INNER JOIN @NaploSorszam nsz ON nsz.TanuloId = t.TanuloId
-- Naplo fooldal
CREATE TABLE #osztalycsoportok (OsztalyCsoportId INT PRIMARY KEY)
INSERT INTO #osztalycsoportok (OsztalyCsoportId)
SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@osztalyId, 1034)
CREATE TABLE #OsztalyVagyTanoraiCsoport (Id INT)
INSERT INTO #OsztalyVagyTanoraiCsoport
SELECT ID FROM fnGetDokumentumOsztalyVagyTanoraiCsoport(@tanevId)
SELECT DISTINCT
@osztalyId OsztalyId
,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 AND i.C_TANEVID = ocs.C_TANEVID AND i.Torolt = 'F'
WHERE ocs.ID = @osztalyId
-- Tanarok
SELECT targy.C_NEV TargyNev, tanar.C_NYOMTATASINEV TanarNev, targykategoria.C_ORDER
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'
INNER JOIN #osztalycsoportok ocs ON ocs.OsztalyCsoportId = f.C_OSZTALYCSOPORTID
INNER JOIN T_TARGYKATEGORIATIPUS_OSSZES ON T_TARGYKATEGORIATIPUS_OSSZES.ID = targy.C_TARGYKATEGORIA
INNER JOIN T_DICTIONARYITEMBASE_OSSZES targykategoria ON targykategoria.ID = T_TARGYKATEGORIATIPUS_OSSZES.ID AND targykategoria.TOROLT = 'F' AND targykategoria.C_TANEVID = @tanevId
WHERE tanar.TOROLT = 'F' AND f.TOROLT = 'F'
AND tanar.C_INTEZMENYID = @intezmenyId
AND tanar.c_tanevId = @tanevId
GROUP BY C_ORDER, targy.C_NEV, tanar.C_NYOMTATASINEV
ORDER BY C_ORDER, targy.C_NEV, tanar.C_NYOMTATASINEV
-- Orarend
EXEC sp_GetOrarendOsztalyonkent @intezmenyId, @tanevID, @osztalyid, @aktivTanevId
-- 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
INNER JOIN #osztalycsoportok ocs ON ocs.OsztalyCsoportId = C_OSZTALYCSOPORTID
WHERE T_ORALATOGATAS_OSSZES.TOROLT='F'
AND T_ORALATOGATAS_OSSZES.c_tanevId = @tanevId
AND T_ORALATOGATAS_OSSZES.C_INTEZMENYID = @intezmenyId
ORDER BY T_ORALATOGATAS_OSSZES.C_DATUM, TANITASIORA.C_ORASZAM
-- Naploellenorzesek
SELECT DISTINCT
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 #OraSorszamTemp (TanitasioraId INT, OraSorszam INT)
CREATE TABLE #OraSorszam (TanitasioraId INT PRIMARY KEY, OraSorszam INT)
DECLARE csoport_cursor CURSOR FOR
SELECT OsztalyCsoportId FROM #osztalycsoportok
DECLARE @ocsId int
OPEN csoport_cursor
FETCH NEXT FROM csoport_cursor INTO @ocsId
WHILE @@FETCH_STATUS = 0
BEGIN
INSERT INTO #OraSorszamTemp
EXEC sp_GetOraSorszamByOsztaly
@osztalyCsoportId = @ocsId,
@datum = @datum,
@intezmenyId = @intezmenyId,
@tanevId = @tanevId
FETCH NEXT FROM csoport_cursor INTO @ocsId
END
CLOSE csoport_cursor
DEALLOCATE csoport_cursor
INSERT INTO #OraSorszam
SELECT DISTINCT * FROM #OraSorszamTemp
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 (SELECT DISTINCT * FROM #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 IIF(@isVegzos = 'T', @VegzosUtolsoNap, @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)
CREATE TABLE #OsszesOra (
Datum datetime
,Oraszam int
,HetSorszama int
,HetNapja int
,Megjegyzes nvarchar(1000)
,Sorszam nvarchar(30)
)
INSERT INTO #OsszesOra
SELECT
C_NAPDATUMA Datum
,oraszam Oraszam
,C_HETSORSZAMA HetSorszama
,nn.C_HETNAPJA HetNapja
,ISNULL(osztalyCsoportTanevRendje.C_MEGJEGYZES, tr.C_MEGJEGYZES) Megjegyzes
,ISNULL(Sorszam,'-') Sorszam
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' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = 'T'
LEFT JOIN
(
SELECT C_DATUM, C_MEGJEGYZES FROM T_OSZTALYCSOPORT_TANEVRENDJE ocstr
INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.Id = ocstr.C_TANEVRENDJEID
WHERE
C_OSZTALYCSOPORTID = @osztalyId
AND TOROLT = 'F'
) osztalyCsoportTanevRendje ON osztalyCsoportTanevRendje.C_DATUM = nn.C_NAPDATUMA
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 = 1499, '(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
INNER JOIN #osztalycsoportok ocs ON ocs.OsztalyCsoportId = btao.C_OSZTALYCSOPORTID
WHERE
tao.C_DATUM = btao.C_DATUM
AND m.C_ORATANULOIID = tm.C_ORATANULOIID
AND tm.TOROLT = 'F'
AND tm.c_tanevId = @tanevId
AND (@iskolaErdekuSzamit = 1 OR tm.C_IGAZOLASTIPUSA <> 1533)
AND btao.TOROLT = 'F'
AND tm.C_TIPUS IN (1499, 1500)
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 = 'F', 1, 0)) 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
INNER JOIN #students s ON s.ID = m.C_ORATANULOIID
WHERE
m.TOROLT = 'F'
AND m.c_tanevId = @tanevId
AND m.C_TIPUS IN (1499, 1500)
AND tao.C_OSZTALYCSOPORTID IN (SELECT ID FROM #OsztalyVagyTanoraiCsoport)
AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
AND tao.TOROLT = 'F'
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, C_TARGYKATEGORIA FROM #megtartottOrak m INNER JOIN T_TANTARGY_OSSZES t ON t.Id = m.TantargyId ) t
ORDER BY C_TARGYKATEGORIA
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
ORDER BY OsszesOra.Datum, Oraszam
'
IF @sql IS NULL
BEGIN
SELECT
NULL C_NAPDATUMA
,NULL Mulasztas
,NULL Megjegyzés
,NULL ORASZAM
,NULL T1ID
,NULL T2ID
,NULL T3ID
,NULL TANTARGY
,NULL C_HETSORSZAMA
,NULL C_HETNAPJA
,NULL NapSorszama
END
ELSE
BEGIN
EXEC sp_executesql @sql
END
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
,OsszesOra.Megjegyzes 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 ' | ' + 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 ' | ' + 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 ' | ' + 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 ' | ' + 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 = 1499, '(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
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
and o.TOROLT = 'F'
and tm.C_TIPUS IN (1499, 1500)
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 = 'F', 1, 0)) 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
INNER JOIN #osztalycsoportok cs ON cs.OsztalyCsoportId = n.C_OSZTALYCSOPORTID
INNER JOIN T_FELHASZNALO_OSSZES t ON t.ID = m.C_ORATANULOIID
WHERE
n.C_TANEVID = @tanevId
AND m.C_TANEVID = @tanevId
AND (@iskolaErdekuSzamit = 1 OR C_IGAZOLASTIPUSA <> 1533)
and m.C_TIPUS IN (1499, 1500)
and n.TOROLT = 'F'
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*/
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, ', '') +
IIF(t.C_SAJATOSNEVELESU = 'T', 'Sajátos nevelési igényű, ', '') +
IIF(t.C_BEJARO = 'T', 'Bejáró, ', '') 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
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, C_SAJATOSNEVELESU, t.C_BEJARO,
t.C_SZOCIALISTAMOGATAS, tt.C_NEV, f.C_NYOMTATASINEV, d.C_NAME, t.C_DIAKIGAZOLVANYSZAM, t.C_BEIRASINAPLOSORSZAM
) tbl
ORDER BY sorszam
/*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
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)
--hiányzás
--Összes
SELECT s.id tanuloId, cast('mulasztás' as nvarchar(100)) tipus,
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
INTO #MulasztasVegleges
FROM #students s
LEFT JOIN (SELECT * FROM (SELECT Id, TanuloId, Honap FROM #mulasztasTmp WHERE 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 Tipus = 1500 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id
--igazolt
INSERT INTO #MulasztasVegleges
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
--igazolatlan
INSERT INTO #MulasztasVegleges
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ülönböző típusok é
IF @isReszletesMulasztasok = 1
BEGIN
INSERT INTO #MulasztasVegleges
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 FROM #mulasztasTmp WHERE Tipus = 1500) 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.IgazolasTipus = 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 AND Tipus = 1500 GROUP BY IgazoltE, TanuloId, IgazolasTipus
)felev ON felev.tanulo=m.Tanulo AND felev.igazoltE=m.IgazoltE AND felev.IgazolasTipus=m.Tipus
END
--KÉSÉS
INSERT INTO #MulasztasVegleges
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 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 Tipus = 1499 AND Datum <= @FelevVege GROUP BY TanuloId) felev on felev.TanuloId=s.id
--igazolt
INSERT INTO #MulasztasVegleges
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
--igazolatlan
INSERT INTO #MulasztasVegleges
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
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 #MulasztasVegleges 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 DISTINCT
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*/
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
,
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),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
,
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
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
print @tantargyakJegyek
DECLARE @sqlJegyek NVARCHAR(MAX)
SET @sqlJegyek = '
SELECT
TanuloId tanuloID
,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 = 7 THEN ''07.''
WHEN Honap = 8 THEN ''08.''
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
, TanuloId
, Ertekeles
, NaploSorszam
, RendezHonap
FROM #jegyek j
INNER JOIN #students s on j.Tanuloid=s.ID
UNION ALL
SELECT
IIF(Tipus = ''Magatartás'', 0, 1)
, Honap
, TanuloId
, Ertekeles
, NaploSorszam
, RendezHonap
FROM #magatartasSzorgalom m
INNER JOIN #students s on m.Tanuloid=s.ID
)a
PIVOT (MAX(Ertekeles) FOR TantargyId in (' + @tantargyakJegyek + ')) piv
ORDER BY NaploSorszam, RendezHonap
'
IF (@tantargyakJegyek IS NULL)
BEGIN
SELECT 0 AS tanuloId
END
ELSE
BEGIN
EXEC sp_executesql @sqlJegyek
END
END
ELSE
BEGIN
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
/* 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'
UNION
SELECT
students.ID tanuloId
,tanuloCsoport.C_VEGZARADEK zaradek
FROM #students students
INNER JOIN T_TANULOCSOPORT_OSSZES tanuloCsoport on students.ID = tanuloCsoport.C_TANULOID
WHERE
tanuloCsoport.C_OSZTALYCSOPORTID = @osztalyId
AND TOROLT = 'F'
AND C_VEGZARADEK IS NOT NULL
AND LEN(C_VEGZARADEK) > 0
/*Szöveges minősítések*/
SELECT
a.tanuloId
,a.Honap
,a.Tantargy
,a.Ertekeles
,a.Tipus
FROM
(
SELECT
s.id tanuloId
,szoveges.Honap
,szoveges.Tantargy
,szoveges.Ertekeles
,szoveges.Tipus
,szoveges.RendezHonap
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
,CASE
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 1 THEN 5
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 2 THEN 6
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 3 THEN 7
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 4 THEN 8
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 5 THEN 9
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 6 THEN 10
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 7 THEN 11
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 8 THEN 12
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 9 THEN 1
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 10 THEN 2
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 11 THEN 3
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 12 THEN 4
END AS RendezHonap
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
,szoveges.RendezHonap
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
,CASE
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 1 THEN 5
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 2 THEN 6
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 3 THEN 7
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 4 THEN 8
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 5 THEN 9
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 6 THEN 10
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 7 THEN 11
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 8 THEN 12
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 9 THEN 1
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 10 THEN 2
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 11 THEN 3
WHEN DATEPART(MONTH, C_ERTEKELESDATUM) = 12 THEN 4
END AS RendezHonap
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 RendezHonap, Tantargy
DROP TABLE #students
DROP TABLE #osztalycsoportok
DROP TABLE #OsztalyVagyTanoraiCsoport
DROP TABLE #megtartottOrak
DROP TABLE #OraSorszam
DROP TABLE #OraSorszamTemp
DROP TABLE #mulasztasTmp
DROP TABLE #MulasztasVegleges
DROP TABLE #jegyekTMP
DROP TABLE #jegyek
DROP TABLE #magatartasSzorgalomTMP
DROP TABLE #magatartasSzorgalom
END
GO