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

591 lines
23 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS [dbo].[uspNyomtatvany_Excel_IdoszakiOsztalyStatisztika]
GO
CREATE PROCEDURE [dbo].[uspNyomtatvany_Excel_IdoszakiOsztalyStatisztika]
@pTanevId int
,@pOsztalyId int
,@pIntezmenyId int
,@pErtekelestipusaId int
,@pLezaroNaptipusId int
,@pMulasztasTipusIdKeses int = 1499
,@pMulasztasTipusIdHianyzas int = 1500
,@pTanevrendjeTanevKezdeteNaptipusId int = 1394 --Tanévrendje első nap típus
,@pTanoraiDicseretTipusId int = 1536 -- Tanórai dicséret
,@pFelszereleshianyTipusId int = 6324 -- Felszereléshiány
,@pHaziFeladatHianyTipusId int = 6325 -- Házi feladat hiány
,@pAtsoroltTanuloAdatok int = 1
,@pOsztalyInditasaId int = 1
,@pElmeletgyakorlat bit = 0
,@pOsztalyzatTipusTypeID int = 44
,@pMagatartasErtekelesTipusTypeID int = 50
,@pSzorgalomErtekelesTipusTypeID int = 51
AS
BEGIN
SET NOCOUNT ON;
--Const
DECLARE
@ElsoFelveVege int = 1400
,@IneVege int = 1403
,@IIIneVege int = 1404
,@UtolsoTanitasiNap int = 1395
,@VegzosUtolsoTanitasiNap int = 1402
,@kesespercHianyzashoz int = 45
,@kesespercGyakHianyzashoz int = 45
,@iskolaErdekuParam int = 1683
,@idoszakEleje date
,@idoszakVege date
--Iskolaerdeku tavollet szamit
DECLARE
@iskolaErdekuSzamit bit = [dbo].fnGetRendszerbeallitasEnumBool(@iskolaErdekuParam, @pIntezmenyId, @pTanevId)
--Osztaly jellemzo
,@vegzosEvfolyamu bit = (SELECT IIF(C_VEGZOSEVFOLYAM = 'T', 1, 0) FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @pOsztalyId)
--Osztalyjellemzok alapjan a lezaro naptipus csereje
SET @pLezaroNaptipusId = (
SELECT CASE
WHEN (@pOsztalyInditasaId = 0 OR @pOsztalyInditasaId = 2) AND @vegzosEvfolyamu = 1 AND @pLezaroNaptipusId = @UtolsoTanitasiNap THEN @VegzosUtolsoTanitasiNap
WHEN (@pOsztalyInditasaId = 0 OR @pOsztalyInditasaId = 2) THEN @pLezaroNaptipusId
WHEN @pLezaroNaptipusId = @ElsoFelveVege THEN @UtolsoTanitasiNap
WHEN @pLezaroNaptipusId = @UtolsoTanitasiNap THEN @ElsoFelveVege
WHEN @pLezaroNaptipusId = @IneVege THEN @IIIneVege
WHEN @pLezaroNaptipusId = @IIIneVege THEN @IneVege
END
)
CREATE TABLE #aktualisOsztalyCsoportok (
OSZTALYCSOPORTID int
)
CREATE TABLE #szurtErtekeles (
T_TANULOERTEKELES_ID int PRIMARY KEY
,C_TANULOID int
,ERTEKELES nvarchar(max)
,ERTEKELES_SZOVEG_MEGJEGYZES nvarchar(max)
,C_ERTEKELESDATUM DATETIME
,C_TANTARGYID int
,TANTARGY_NEV nvarchar(255) COLLATE DATABASE_DEFAULT
,TARGYKATEGORIA_NEV nvarchar(255) COLLATE DATABASE_DEFAULT
,TARGYKATEGORIA_SORSZAM int
,T_TANTARGY_C_FOTARGYE char(1) COLLATE DATABASE_DEFAULT
,T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN char(1) COLLATE DATABASE_DEFAULT
,C_OSZTALYCSOPORTID int
,RENDEZ0 int
,RENDEZ1 int
,RENDEZ2 nvarchar(255) COLLATE DATABASE_DEFAULT
,RENDEZ3 int
,RENDEZ4 int
,RENDEZ5 nvarchar(255) COLLATE DATABASE_DEFAULT
)
CREATE TABLE #szurtMulasztas (
TIPUS_CHAR char(1)
,C_TIPUS int
,C_IGAZOLT char(1) COLLATE DATABASE_DEFAULT
,C_TANULOID int
,C_TANULOCSOPORTID int
,C_GYAKORLATI char(1) COLLATE DATABASE_DEFAULT
,KESESPERC int
,MULASZTASOK_SZAMA int
,HOZOTTIGAZOLTMULTASZTASOK_SZAMA int
,HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA int
,FELDOLGOZATLANOK_SZAMA int
)
CREATE TABLE #Tanulok (
TanuloId int
,TanulocsoportId int PRIMARY KEY
)
CREATE TABLE #Tipusok (
Tipus_Char char(1)
,Igazolt char(1)
,Tipus int
,Gyakorlati char(1)
)
SELECT TOP 1 @idoszakEleje =
ISNULL(tr.C_DATUM,te.C_KEZDONAP)
FROM T_TANEV_OSSZES te
LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_TANEVID = te.ID AND tr.TOROLT='F' AND tr.C_NAPTIPUSA = @pTanevrendjeTanevKezdeteNaptipusId
LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON ocstr.C_TANEVRENDJEID = tr.ID
AND (ocstr.C_OSZTALYCSOPORTID IS NULL OR ocstr.C_OSZTALYCSOPORTID = @pOsztalyId)
WHERE te.ID = @pTanevId
ORDER BY ocstr.C_OSZTALYCSOPORTID DESC
SELECT @idoszakVege= ISNULL(
(
SELECT TOP 1
C_DATUM
FROM T_TANEVRENDJE_OSSZES tr
LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID
AND (ocstr.C_OSZTALYCSOPORTID IS NULL OR ocstr.C_OSZTALYCSOPORTID = @pOsztalyId)
WHERE tr.C_TANEVID = @pTanevId AND tr.C_NAPTIPUSA = @pLezaroNaptipusId AND tr.TOROLT = 'F'
ORDER BY ocstr.C_OSZTALYCSOPORTID DESC
)
,GETDATE()
)
DECLARE @utolsoTanitasiNapDatum date
SELECT @utolsoTanitasiNapDatum = UtolsoTanitasiNap
FROM fnGetOsztalyCsoportokUtolsoTanitasiNap(@pTanevId, @pOsztalyId)
IF @pAtsoroltTanuloAdatok IN (0,1)
BEGIN
INSERT INTO #aktualisOsztalyCsoportok (OSZTALYCSOPORTID)
SELECT ID
FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@pOsztalyId, @pTanevId, DEFAULT, DEFAULT)
END
ELSE
BEGIN
INSERT INTO #aktualisOsztalyCsoportok (OSZTALYCSOPORTID)
SELECT KapcsOszt.ID
FROM fnGetKapcsolodoOsztalycsoportokByDate(@pOsztalyId, @idoszakEleje, @utolsoTanitasiNapDatum) KapcsOszt
WHERE (ID IN (
SELECT ID
FROM T_OSZTALY_OSSZES
UNION
SELECT ID
FROM T_CSOPORT_OSSZES
WHERE C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@pTanevId))
)
)
END
-- ÉRTÉKELÉS insert
INSERT INTO #szurtErtekeles (
T_TANULOERTEKELES_ID
,C_TANULOID
,ERTEKELES
,ERTEKELES_SZOVEG_MEGJEGYZES
,C_ERTEKELESDATUM
,C_TANTARGYID
,TANTARGY_NEV
,TARGYKATEGORIA_NEV
,TARGYKATEGORIA_SORSZAM
,T_TANTARGY_C_FOTARGYE
,T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN
,C_OSZTALYCSOPORTID
,RENDEZ0
,RENDEZ1
,RENDEZ2
,RENDEZ3
,RENDEZ4
,RENDEZ5
)
SELECT
ROW_NUMBER() OVER (ORDER BY TanuloId)
,TanuloId
,COALESCE(
IIF(ErtekelesOsztalyzatValue IS NOT NULL,
CONCAT(
IIF(IsTanulmanyiatlagbanemszamit = 'T','"',''), CAST(ErtekelesOsztalyzatValue AS nvarchar(max)), IIF(IsTanulmanyiatlagbanemszamit = 'T','"','')
),
NULL
),
IIF(ErtekelesSzoveg IS NOT NULL, IIF(ErtekelesSzovegRovidNev IS NOT NULL, '"' + ErtekelesSzovegRovidNev + '"', 'sz'), NULL),
'%')
,ISNULL(ErtekelesSzoveg, ISNULL(ErtekelesSzazalek + ' ', '') + ISNULL(ErtekelesTema, ''))
,Datum
,TantargyId
,COALESCE(TantargyNevNyomtatvanyban, TantargyNev) AS TANTARGY_NEV
,dib.C_NAME
,dib.C_VALUE
,FotargyE
,Altantargy
,OsztalyCsoportId
,RENDEZ0
,RENDEZ1
,RENDEZ2
,RENDEZ3
,RENDEZ4
,RENDEZ5
FROM fnGetDokumentumErtekelesekOsztalyonkent (@pTanevId, @pOsztalyId, @pErtekelestipusaId, DEFAULT, DEFAULT, @pAtsoroltTanuloAdatok, DEFAULT, @pOsztalyzatTipusTypeID, @pMagatartasErtekelesTipusTypeID, @pSzorgalomErtekelesTipusTypeID) AS ERTEKELESEK
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES dib ON dib.ID = ERTEKELESEK.TargyKategoriaId AND dib.C_TANEVID = @pTanevId
WHERE TantargyId IS NOT NULL AND (FotargyE = 'T' OR Altantargy = 'T')
--MULASZTÁS insert
INSERT INTO #Tipusok (Tipus_Char,Igazolt,Tipus,Gyakorlati)VALUES
('H','T',1500,'T'),('H','F',1500,'T'),('K','T',1499,'T'),('K','F',1499,'T'),
('H','T',1500,'F'),('H','F',1500,'F'),('K','T',1499,'F'),('K','F',1499,'F')
,('H','-',1500,'T'),('H','-',1500,'F'),('K','-',1499,'T'),('K','-',1499,'F')
INSERT INTO #Tanulok
SELECT DISTINCT
tcs.C_TANULOID
,x.ID TanuloCsoportId
FROM T_TANULOCSOPORT_OSSZES tcs
CROSS APPLY (SELECT TOP 1 belepes.ID
FROM T_TANULOCSOPORT_OSSZES belepes
WHERE
belepes.C_TANULOID = tcs.C_TANULOID
AND belepes.C_OSZTALYCSOPORTID = tcs.C_OSZTALYCSOPORTID
AND belepes.TOROLT = 'F'
AND belepes.C_TANEVID = tcs.C_TANEVID
ORDER BY C_BELEPESDATUM desc) x
WHERE
tcs.C_OSZTALYCSOPORTID = @pOsztalyId
AND tcs.C_BELEPESDATUM <= @idoszakVege
AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > @idoszakVege)
AND tcs.TOROLT = 'F'
AND tcs.C_TANEVID = @pTanevId
INSERT INTO #szurtMulasztas (TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, C_TANULOCSOPORTID, C_GYAKORLATI,KESESPERC,MULASZTASOK_SZAMA, HOZOTTIGAZOLTMULTASZTASOK_SZAMA, HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA, FELDOLGOZATLANOK_SZAMA)
SELECT Tipus_Char, Tipus,Igazolt,TanuloId, TanulocsoportId,Gyakorlati,0,0,0,0,0
FROM #Tanulok
CROSS APPLY #Tipusok
UPDATE szm SET
KESESPERC = m.KesesPercben
,MULASZTASOK_SZAMA = m.MULASZTASOK_SZAMA
,HOZOTTIGAZOLTMULTASZTASOK_SZAMA = ISNULL(IIF(szm.C_IGAZOLT = 'T',hianyzas.HOZOTTIGAZOLTHIANYZAS,0),0)
,HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA = ISNULL(IIF(szm.C_IGAZOLT = 'F',hianyzas.HOZOTTIGAZOLATLANHIANYZAS,0),0)
FROM #szurtMulasztas szm
LEFT JOIN (
SELECT
m.Tipusa
,m.Igazolt
,m.TanuloId
,m.TanuloCsoportId
,m.Gyakorlati
,SUM(ISNULL(KesesPercben,0)) as KesesPercben
,ISNULL(COUNT(m.Tipusa),0) AS MULASZTASOK_SZAMA
FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @iskolaErdekuSzamit, 0, IIF(@pAtsoroltTanuloAdatok > 0, 1, 0), @idoszakEleje, @idoszakVege, DEFAULT) m
WHERE m.Igazolt IS NOT NULL
AND m.Tipusa BETWEEN @pMulasztasTipusIdKeses AND @pMulasztasTipusIdHianyzas
GROUP BY m.Tipusa, m.Igazolt, m.TanuloId, m.TanuloCsoportId, m.Gyakorlati
) m ON m.Gyakorlati = szm.C_GYAKORLATI
AND m.Tipusa = szm.C_TIPUS
AND m.Igazolt = szm.C_IGAZOLT
AND m.TanuloId = szm.C_TANULOID
AND m.TanuloCsoportId = szm.C_TANULOCSOPORTID
LEFT JOIN (
SELECT
tcs.C_TANULOID
,SUM(tta.C_HOZOTTIGAZOLTHIANYZAS) as HOZOTTIGAZOLTHIANYZAS
,SUM(tta.C_HOZOTTIGAZOLATLANHIANYZAS) as HOZOTTIGAZOLATLANHIANYZAS
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_TANULOTANUGYIADATOK_OSSZES tta ON tta.C_TANULOCSOPORTID = tcs.ID
AND tta.C_TANEVID = @pTanevId AND tta.TOROLT = 'F'
WHERE tcs.C_OSZTALYCSOPORTID = @pOsztalyId
AND tcs.C_TANEVID = @pTanevId
AND tcs.C_BELEPESDATUM < @idoszakVege
AND tcs.TOROLT = 'F'
GROUP BY tcs.C_TANULOID
) hianyzas on hianyzas.C_TANULOID = szm.C_TANULOID
AND szm.TIPUS_CHAR = 'H'
AND szm.C_GYAKORLATI = 'F'
UPDATE szm SET
FELDOLGOZATLANOK_SZAMA = IIF(m.Tipusa = 1500, ISNULL(m.MULASZTASOK_SZAMA, 0), ISNULL(m.KesesPercben, 0))
FROM #szurtMulasztas szm
LEFT JOIN (
SELECT
m.Tipusa
,m.Igazolt
,m.TanuloId
,m.TanuloCsoportId
,m.Gyakorlati
,SUM(ISNULL(KesesPercben,0)) as KesesPercben
,ISNULL(COUNT(m.Tipusa),0) AS MULASZTASOK_SZAMA
FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @iskolaErdekuSzamit, 0, IIF(@pAtsoroltTanuloAdatok > 0, 1, 0), @idoszakEleje, @idoszakVege, DEFAULT) m
WHERE m.Igazolt IS NULL
AND m.Tipusa BETWEEN @pMulasztasTipusIdKeses AND @pMulasztasTipusIdHianyzas
GROUP BY m.Tipusa, m.Igazolt, m.TanuloId, m.TanuloCsoportId, m.Gyakorlati
) m ON m.Gyakorlati = szm.C_GYAKORLATI
AND m.Tipusa = szm.C_TIPUS
AND (m.Igazolt IS NULL AND szm.C_IGAZOLT='-')
AND m.TanuloId = szm.C_TANULOID
AND m.TanuloCsoportId = szm.C_TANULOCSOPORTID
--==================== SELECTEK ==========================
-- OSZTÁLY
SELECT
o.ID
,ocs.C_NEV
,ocs.C_VEGZOSEVFOLYAM
,fh.C_NYOMTATASINEV
,o.C_OSZTALYNAPLOMEGNYITASA
,o.C_OSZTALYNAPLOZARASA
,o.C_OSZTALYFONOKID
FROM T_OSZTALY_OSSZES o
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = o.ID AND ocs.TOROLT='F'
LEFT JOIN T_FELHASZNALO_OSSZES fh ON o.C_OSZTALYFONOKID = fh.ID AND fh.TOROLT='F'
INNER JOIN T_FELADATELLATASIHELY_OSSZES felh ON felh.ID = ocs.C_FELADATELLATASIHELYID AND felh.TOROLT='F'
WHERE ocs.ID = @pOsztalyId
--TANULÓK LISTA
SELECT
fh.ID as C_TANULOID
,fh.C_NYOMTATASINEV as TANULONEV
,fh.C_ANYJANEVE as ANYJANEVE
,fh.C_OKTATASIAZONOSITO as OKTATASIAZONOSITO
FROM T_FELHASZNALO_OSSZES fh
INNER JOIN #Tanulok AS ot ON ot.TANULOID = fh.ID
WHERE fh.TOROLT='F'
ORDER BY fh.C_NYOMTATASINEV;
-- TANTÁRGYAK (TANTÁRGYFELOSZTÁS, ÉRTÉKELÉS)
SELECT DISTINCT
C_TANTARGYID
,TANTARGY_NEV
,C_FOTARGYE
,C_ALTANTARGYKENTNYOMTATVANYBAN
,RENDEZ0
,RENDEZ1
,RENDEZ2
,RENDEZ3
,RENDEZ4
,RENDEZ5
FROM (
SELECT DISTINCT
f.C_TANTARGYID
,COALESCE(tgy.C_NEVNYOMTATVANYBAN, tgy.C_NEV) as TANTARGY_NEV
,tgy.C_FOTARGYE
,tgy.C_ALTANTARGYKENTNYOMTATVANYBAN
,tgy.C_SORSZAM as RENDEZ0
,CASE WHEN tgy.C_FOTARGYID IS NULL THEN ISNULL(TargyKategoriaDictionary.C_ORDER, 10000) ELSE ISNULL(FotargyKategoriaDictionary.C_ORDER, 10000) END as RENDEZ1
,COALESCE(FotargyTable.C_NEVNYOMTATVANYBAN, FotargyTable.C_NEV, tgy.C_NEV) as RENDEZ2
,ISNULL(tgy.C_FOTARGYID, tgy.ID) as RENDEZ3
,tgy.C_FOTARGYID as RENDEZ4
,ISNULL(tgy.C_NEVNYOMTATVANYBAN, tgy.C_NEV) as RENDEZ5
FROM T_FOGLALKOZAS_OSSZES f
INNER JOIN #aktualisOsztalyCsoportok ocs ON ocs.OSZTALYCSOPORTID = f.C_OSZTALYCSOPORTID
INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = f.C_TANTARGYID AND tgy.C_TANEVID = @pTanevId
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES TargyKategoriaDictionary ON TargyKategoriaDictionary.Id = tgy.C_TARGYKATEGORIA
AND TargyKategoriaDictionary.TOROLT = 'F'
AND TargyKategoriaDictionary.C_TANEVID = @pTanevId
LEFT JOIN T_TANTARGY_OSSZES FotargyTable ON tgy.C_FOTARGYID = FotargyTable.ID
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES FotargyKategoriaDictionary ON FotargyKategoriaDictionary.ID = FotargyTable.C_TARGYKATEGORIA
AND FotargyKategoriaDictionary.TOROLT = 'F'
AND FotargyKategoriaDictionary.C_TANEVID = FotargyTable.C_TANEVID
WHERE f.TOROLT = 'F' AND (tgy.C_FOTARGYE = 'T' OR tgy.C_ALTANTARGYKENTNYOMTATVANYBAN = 'T')
UNION
SELECT DISTINCT
C_TANTARGYID
,TANTARGY_NEV
,T_TANTARGY_C_FOTARGYE AS C_FOTARGYE
,T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN AS C_ALTANTARGYKENTNYOMTATVANYBAN
,RENDEZ0
,RENDEZ1
,RENDEZ2
,RENDEZ3
,RENDEZ4
,RENDEZ5
FROM #szurtErtekeles
WHERE (@pAtsoroltTanuloAdatok = 2 OR C_OSZTALYCSOPORTID IN (SELECT OSZTALYCSOPORTID FROM #aktualisOsztalyCsoportok))
) AS TANTARGYAK
ORDER BY RENDEZ0,RENDEZ1,RENDEZ2,RENDEZ3,RENDEZ4,RENDEZ5,TANTARGY_NEV;
-- ÉRTÉKELÉS lista
SELECT *
FROM #szurtErtekeles;
--MAGATARTÁS-SZORGALOM
SELECT
ROW_NUMBER() OVER (ORDER BY TanuloId) AS ID
,TanuloId AS C_TANULOID
,COALESCE(CAST(MagatartasOsztalyzatValue AS nvarchar(6)), CAST(MagatartasErtekOsztalyzatkent AS nvarchar(6)), IIF(MagatartasSzovegRovidNev IS NOT NULL, '"' + MagatartasSzovegRovidNev + '"', 'sz')) AS MagatartasOsztalyzat
,MagatartasErtek
,COALESCE(CAST(SzorgalomOsztalyzatValue AS nvarchar(6)), CAST(SzorgalomErtekOsztalyzatkent AS nvarchar(6)), IIF(SzorgalomSzovegRovidNev IS NOT NULL, '"' + SzorgalomSzovegRovidNev + '"', 'sz')) AS SzorgalomOsztalyzat
,SzorgalomErtek
,ErtekelesSzoveg AS C_ERTEKELESSZOVEG
,Datum AS C_ERTEKELESDATUM
,'F' AS TOROLT -- y tho?
FROM fnGetDokumentumErtekelesekOsztalyonkent (@pTanevId, @pOsztalyId, @pErtekelestipusaId, DEFAULT, DEFAULT, @pAtsoroltTanuloAdatok, DEFAULT, @pOsztalyzatTipusTypeID, @pMagatartasErtekelesTipusTypeID, @pSzorgalomErtekelesTipusTypeID) AS ERTEKELESEK
WHERE TantargyId IS NULL AND (@pAtsoroltTanuloAdatok > 0 OR OsztalyCsoportId IN (SELECT OSZTALYCSOPORTID FROM #aktualisOsztalyCsoportok));
--MULASZTÁS stat
IF @pElmeletgyakorlat=0
BEGIN
WITH cte AS (
SELECT
TIPUS_CHAR
,C_TIPUS
,C_IGAZOLT
,C_TANULOID
,SUM(KESESPERC) AS KESESPERC
,SUM(KESESPERC)/@kesespercHianyzashoz AS KESESORA
,SUM(ISNULL(MULASZTASOK_SZAMA,0)) AS MULASZTASOK_SZAMA
,SUM(HOZOTTIGAZOLTMULTASZTASOK_SZAMA) AS HOZOTTIGAZOLTMULTASZTASOK_SZAMA
,SUM(HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA) AS HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA
,SUM(FELDOLGOZATLANOK_SZAMA) AS FELDOLGOZATLANOK_SZAMA
FROM #szurtMulasztas
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID
)
SELECT
szm.TIPUS_CHAR
,szm.C_TIPUS
,szm.C_IGAZOLT
,szm.C_TANULOID
,szm.KESESPERC
,szm.KESESORA
,ISNULL(szm.MULASZTASOK_SZAMA,0) + ISNULL((SELECT KESESORA FROM cte WHERE cte.C_TANULOID = szm.C_TANULOID AND cte.C_TIPUS = 1499 AND szm.C_TIPUS = 1500 AND cte.C_IGAZOLT = szm.C_IGAZOLT), 0) +
IIF(szm.TIPUS_CHAR = 'K',0,IIF(szm.C_IGAZOLT = 'T',szm.HOZOTTIGAZOLTMULTASZTASOK_SZAMA,szm.HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA))
AS OSSZES_MULASZTASOK_SZAMA
,ISNULL(szm.MULASZTASOK_SZAMA, 0) AS MULASZTASOK_SZAMA
,IIF(szm.TIPUS_CHAR = 'K',0,IIF(szm.C_IGAZOLT = 'T',szm.HOZOTTIGAZOLTMULTASZTASOK_SZAMA,szm.HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA))
AS HOZOTTMULASZTASOK_SZAMA
,szm.FELDOLGOZATLANOK_SZAMA
FROM cte AS szm
ORDER BY szm.C_TANULOID, szm.C_TIPUS, szm.C_IGAZOLT DESC
SELECT
C_IGAZOLT
,C_TANULOID
,SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA
FROM (
SELECT
TIPUS_CHAR
,C_TIPUS
,C_IGAZOLT
,C_TANULOID
,SUM(KESESPERC)/@kesespercHianyzashoz AS MULASZTASOK_SZAMA
FROM #szurtMulasztas
WHERE TIPUS_CHAR = 'K'
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID
UNION ALL
SELECT
TIPUS_CHAR
,C_TIPUS
,C_IGAZOLT
,C_TANULOID
,SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA
FROM #szurtMulasztas
WHERE TIPUS_CHAR = 'H'
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID
) AS KM
GROUP BY C_IGAZOLT, C_TANULOID
ORDER BY C_TANULOID, C_IGAZOLT DESC
END
ELSE
BEGIN
WITH cte AS (
SELECT
szm.TIPUS_CHAR
,szm.C_TIPUS
,szm.C_IGAZOLT
,szm.C_TANULOID
,SUM(szm.KESESPERC) AS KESESPERC
,SUM(szm.KESESORA) AS KESESORA
,SUM(ISNULL(szm.MULASZTASOK_SZAMA,0)) AS MULASZTASOK_SZAMA
,SUM(IIF(szm.TIPUS_CHAR = 'K'
,0
,IIF(szm.C_IGAZOLT = 'T'
,szm.HOZOTTIGAZOLTMULTASZTASOK_SZAMA
,szm.HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA
)
)) AS HOZOTTMULASZTASOK_SZAMA
,szm.C_GYAKORLATI
,SUM(szm.FELDOLGOZATLANOK_SZAMA) AS FELDOLGOZATLANOK_SZAMA
FROM (
SELECT
TIPUS_CHAR
,C_TIPUS
,C_IGAZOLT
,C_TANULOID
,KESESPERC
,KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN @kesespercGyakHianyzashoz ELSE @kesespercHianyzashoz END) AS KESESORA
,MULASZTASOK_SZAMA
,HOZOTTIGAZOLTMULTASZTASOK_SZAMA
,HOZOTTIGAZOLATLANTMULTASZTASOK_SZAMA
,C_GYAKORLATI
,FELDOLGOZATLANOK_SZAMA
FROM #szurtMulasztas ) AS szm
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_GYAKORLATI, C_TANULOID
)
SELECT
szm.TIPUS_CHAR
,szm.C_TIPUS
,szm.C_IGAZOLT
,szm.C_TANULOID
,szm.KESESPERC
,szm.KESESORA
,MULASZTASOK_SZAMA + ISNULL((SELECT KESESORA FROM cte WHERE cte.C_TANULOID = szm.C_TANULOID AND cte.C_TIPUS = 1499 AND szm.C_TIPUS = 1500 AND cte.C_IGAZOLT = szm.C_IGAZOLT AND cte.C_GYAKORLATI = szm.C_GYAKORLATI), 0)
+ IIF(szm.TIPUS_CHAR = 'K' OR szm.C_GYAKORLATI = 'T'
,0
,szm.HOZOTTMULASZTASOK_SZAMA
) AS OSSZES_MULASZTASOK_SZAMA
,MULASZTASOK_SZAMA
,HOZOTTMULASZTASOK_SZAMA
,C_GYAKORLATI
,FELDOLGOZATLANOK_SZAMA
FROM cte AS szm
ORDER BY szm.C_TANULOID, szm.C_TIPUS DESC, szm.C_IGAZOLT DESC
SELECT C_IGAZOLT, C_TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, C_GYAKORLATI
FROM (
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN @kesespercGyakHianyzashoz ELSE @kesespercHianyzashoz END) AS MULASZTASOK_SZAMA, C_GYAKORLATI
FROM #szurtMulasztas
WHERE TIPUS_CHAR = 'K'
UNION ALL
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, C_TANULOID, MULASZTASOK_SZAMA, C_GYAKORLATI
FROM #szurtMulasztas
WHERE TIPUS_CHAR = 'H'
) AS KM
GROUP BY C_IGAZOLT, C_TANULOID, C_GYAKORLATI
ORDER BY C_TANULOID, C_IGAZOLT DESC
END
--TANÓRAI FELJEGYZÉSEK
SELECT
C_TANULOID
,SUM(IIF(C_TIPUS = @pTanoraiDicseretTipusId, 1, 0)) AS TanoraiDicseret
,SUM(IIF(C_TIPUS = @pFelszereleshianyTipusId, 1, 0)) AS FelszerelesHiany
,SUM(IIF(C_TIPUS = @pHaziFeladatHianyTipusId, 1, 0)) AS HaziFeladatHiany
,'F' AS TOROLT
FROM T_TANULOESEMENY_OSSZES AS TANULOESEMENY
INNER JOIN T_TANITASIORA_OSSZES AS TANITASIORA ON TANITASIORA.ID = TANULOESEMENY.C_TANITASIORAID
INNER JOIN T_TANULO_TANULOESEMENY AS TANULO_TANULOE ON TANULO_TANULOE.C_TANULOESEMENYID = TANULOESEMENY.ID
INNER JOIN T_DICTIONARYITEMBASE_OSSZES AS TIPUS ON TIPUS.ID = TANULOESEMENY.C_TIPUS AND TIPUS.C_TANEVID = TANULOESEMENY.C_TANEVID AND TIPUS.TOROLT = 'F'
INNER JOIN #Tanulok AS OSZTALYTANULOK ON OSZTALYTANULOK.TANULOID = TANULO_TANULOE.C_TANULOID
INNER JOIN #aktualisOsztalyCsoportok AS OSZTALYCSOPORT ON OSZTALYCSOPORT.OSZTALYCSOPORTID = TANITASIORA.C_OSZTALYCSOPORTID
LEFT JOIN T_CSOPORT_OSSZES AS CSOPORT ON CSOPORT.ID = OSZTALYCSOPORT.OSZTALYCSOPORTID AND CSOPORT.TOROLT = 'F'
LEFT JOIN T_OSZTALY_OSSZES AS OSZTALY ON OSZTALY.ID = OSZTALYCSOPORT.OSZTALYCSOPORTID AND OSZTALY.TOROLT = 'F'
WHERE TANULOESEMENY.TOROLT = 'F' AND TANITASIORA.TOROLT = 'F' AND TANULOESEMENY.C_TANEVID = @pTanevId AND C_TANITASIORAID IS NOT NULL
AND TANITASIORA.C_DATUM BETWEEN @idoszakEleje AND @idoszakVege
AND TANITASIORA.C_OSZTALYCSOPORTID IN (SELECT OSZTALYCSOPORTID FROM #aktualisOsztalyCsoportok)
GROUP BY C_TANULOID
-- Osztály adatok az iktatáshoz
SELECT
f.C_NYOMTATASINEV Osztalyfonok
,f.ID OsztalyfonokId
,ocs.C_NEV Osztalynev
,@pOsztalyId OsztalyId
,ocs.C_EVFOLYAMTIPUSA EvfolyamTipusa
,ocs.C_FELADATELLATASIHELYID FeladatEllatasiHelyId
,o.C_TANTERVID TantervId
,ocs.C_KEPZESIFORMA KepzesiForma
,o.C_AGAZAT Agazat
,o.C_SZAKMACSOPORT SzakmaCsoport
,o.C_SZAKKEPESITES Szakkepesites
,o.C_RESZSZAKKEPESITES Reszszakkepesites
,o.C_AGAZATUJSZKTTIPUSID AS UjSzktAgazat
,o.C_SZAKMATIPUSID AS UjSzktSzakma
,o.C_SZAKMAIRANYTIPUSID AS UjSzktSzakmairany
,o.C_TANULMANYITERULETNKTTIPUSID AS NktTanulmanyiTerulet
,o.C_SZAKKEPESITESNKTTIPUSID AS NktSzakkepesites
,o.C_SZAKIRANYNKTTIPUSID AS NktSzakirany
,ocs.C_KERESZTFELEVES OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM CSJVegzosEvfolyamu
,ocs.C_ISTECHNIKAI OJTechnikaiOsztaly
,o.C_NEMZETISEGI OJNemzetisegi
,o.C_KETTANNYELVU OJKettannyelvu
,o.C_NYELVIELOKESZITO OJNyelviElokeszito
,ocs.C_ISGYOGYPEDAGOGIAILOGOPEDIAI OJIsGyogypedagogiaiLogopediai
,o.C_SPORT OJSportOsztaly
,o.C_AJPROGRAM OJAranyJanosProgram
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.id
LEFT JOIN T_FELHASZNALO_OSSZES f ON f.ID = o.C_OSZTALYFONOKID
WHERE ocs.ID = @pOsztalyId AND ocs.C_TANEVID = @pTanevId AND ocs.TOROLT = 'F';
SELECT
C_TANULOID
,[D] AS Dicseret
,[K] AS Kituno
FROM (
SELECT
C_TANULOID
,T_TANULOERTEKELES_ID
,LEFT(ERTEKELES_SZOVEG_MEGJEGYZES, 1) AS Szoveg
FROM #szurtErtekeles
WHERE ERTEKELES = '5'
AND REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(ERTEKELES_SZOVEG_MEGJEGYZES,CHAR(160),CHAR(32)),CHAR(9),CHAR(32)),CHAR(32),'(¤¤)'),'¤)(¤',''),'(¤¤)',CHAR(32)) IN ( 'Dicséret', 'Kitűnő' )
) AS s
PIVOT(COUNT(T_TANULOERTEKELES_ID) FOR Szoveg IN ([D], [K])) piv
ORDER BY C_TANULOID
END
GO