This commit is contained in:
2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
UPDATE tgy
SET C_ESLTANTARGYKATEGORIAID =
CASE
WHEN C_TARGYKATEGORIA IN (1202,6726,6737) THEN 7578 --ANGOL
WHEN C_TARGYKATEGORIA IN (1203,6731,6741) THEN 7579 --NÉMET
WHEN C_TARGYKATEGORIA IN (1204,6729,6739) THEN 7580 --FRANCIA
WHEN C_TARGYKATEGORIA IN (1205,1206,1207,1208,1209,6728,6729,6730,6731,6732,6733,6734,6738,6739,6740,6741,6742,6743,6744) THEN 7581 --EGYÉB NYELV
WHEN C_TARGYKATEGORIA IN (1200) THEN 7582 --NEMZETISÉGI
WHEN C_TARGYKATEGORIA IN (1210) THEN 7583 --MATEK
WHEN C_TARGYKATEGORIA IN (1198) AND tgy.C_NEV LIKE '%irodalom%' THEN 7585 --MAGYAR NYELV ÉS IRODALOM (IRODALOM)
WHEN C_TARGYKATEGORIA IN (1198) AND tgy.C_NEV LIKE '%nyelv%' THEN 7584 --MAGYAR NYELV ÉS IRODALOM (NYELV(TAN))
WHEN C_TARGYKATEGORIA IN (1219) THEN 7588 --FIZIKA
WHEN C_TARGYKATEGORIA IN (1220) THEN 7589 --KÉMIA
WHEN C_TARGYKATEGORIA IN (1221) THEN 7590 --BIOLÓGIA
WHEN C_TARGYKATEGORIA IN (1223) THEN 7591 --FÖLDRAJZ
WHEN C_TARGYKATEGORIA IN (1224) THEN 7592 --ÉNEK-ZENE
WHEN C_TARGYKATEGORIA IN (1229,1230) THEN 7593 --SZÁMÍTÁSTECHIKA, INFORMATIKA
WHEN C_TARGYKATEGORIA IN (1232,6755) THEN 7594 --TECHNIKA
WHEN C_TARGYKATEGORIA IN (1235) THEN 7595 --TESTNEVELÉS
WHEN C_TARGYKATEGORIA IN (6754,1215) THEN 7587 --TÖRTÉNELEM
WHEN C_TARGYKATEGORIA IN (1240,1269,1286,1274,1288,1277,1279,1273,1275,1284,1278,6749,6707,6750,1281,1287,1272,1280,1271,6751,
1270,1283,1276,1285,6752) THEN 7597 --SZAKMAI GYAKORLAT
WHEN C_TARGYKATEGORIA IN (1239,1249,1266,1254,1268,1257,1259,1253,1255,1264,1258,6745,6746,6706,1261,1267,1252,1260,1251,6747,
1250,1263,1256,1265,6748) THEN 7596 --SZAKMAI ELMÉLET
ELSE 7598 --EGYÉB
END
FROM T_TANTARGY tgy
INNER JOIN T_TANEV tn ON tn.ID = tgy.C_TANEVID AND tn.TOROLT='F' AND tn.C_AKTIV = 'T' AND tn.C_NEV = '2019/2020'
INNER JOIN T_INTEZMENY i ON i.ID = tgy.C_INTEZMENYID AND i.TOROLT='F'
WHERE tgy.TOROLT='F'

View File

@@ -0,0 +1,619 @@
DROP PROCEDURE IF EXISTS sp_ExportEsl_A03T01_1
GO
CREATE PROCEDURE [dbo].[sp_ExportEsl_A03T01_1]
@tanevId int
,@feladatEllatasiHelyId int
,@isFelevi int = 0
AS
BEGIN
SET NOCOUNT ON;
--Táblák deklarálása
CREATE TABLE #Tanulok (
TanuloNev nvarchar(1024)
,Neme int
,Evfolyam int
,Kategoria nvarchar(500)
)
CREATE TABLE #TanulokOsszes (
Kategoria nvarchar(500)
,Osszes int
,OsszesLany int
)
CREATE TABLE #TanuloErtekeles (
Id int
,Tanulo int
,Ertekeles int
,Tipus int
)
CREATE TABLE #ErintettTanulok (
Evfolyam int
,TanuloId int
,Neme int
,TanuloNev nvarchar(255)
,Oktatasiazonosito nvarchar(11)
,TanuloOsztalyNev nvarchar(255)
,IsKozepesMiatt int
,IsRontasMiatt int
,TanuloOsztalyId int
,INDEX IX_01 (TanuloId)
)
CREATE TABLE #KetFeltetelTanulok (
TanuloId int
,Evfolyam int
,Neme int
,TanuloNev nvarchar(510)
,OktatasiAzonosito nvarchar(11)
,TanuloOsztalyNev nvarchar(255)
,IsHianyzasMiatt int
,IsKiemeltMiatt int
,IsGyermekVedelemMiatt int
,IsAltalanosIskolaMiatt int
)
CREATE TABLE #Kategoria(
KategoriaNev nvarchar(500)
,Sorrend int
)
CREATE TABLE #IntezmenyEvfolyamok(
ID int
,EvfolyamNev nvarchar(510)
)
INSERT INTO #Kategoria( --Egyszerűbb így, hogy meglegyen minden kategória a végén, sorrenddel együtt, akkor is, ha nincs hozzá elem
KategoriaNev
,Sorrend
) VALUES
('Osszesen',1)
,('Lany',2)
,('AFelevErtekelesenelMinositesenelATanuloEgyTizedesjegyigSzamitottTanulmanyiAtlagaAMagatartasEsSzorgalomErtekelesetMinositesetNemBeleszamitvaNemEriElKozepes3Szintet',3)
,('AzEvVegiJegyekAlapjanAFeleviJegyekhezKepestLegalabb11NyiAtlagotRontoTanulokSzama',4)
,('AFelevErtekelesenelMinositesenelATanuloEgyVagyTobbTantargybolElegtelen1OsztalyzatotKapott',5)
,('AFelevMagatartasanakErtekelesenelMinositesenelATanuloRossz2ErtekelestKapott',6)
,('AFelevSzorgalmanakErtekelesenelMinositesenelATanuloHanyag2ErtekelestKapott',7)
,('AzAdottTanitasiEvbenEvismetlesreKotelezett',8)
,('AFelevbenATanulo50OratMeghaladoHianyzassalRendelkezik',9)
,('AFelevbenSzuloiKeresreMagantanulovaValtTanulo',10)
,('AFelevbenMenekultOltalmazottMenedekesTanulokSzama',11)
,('AFelevbenVeszelyezeztetteValtTanulokSzama',12)
,('AFelevbenIdeiglenesHatallyalElhelyezettVagyNevelesbeVettTanulokSzama',13)
,('KettoFeltetelTelejesuleseEsetenLemorzsolodassalVeszelyeztetettTanulo',14)
,('EbbolAFelevben100OratEleroIgazoltHianyzassalRendelkezoTanulokSzama',15)
,('EbbolKiemeltFigyelmetIgenyloTanulokSzamaAKiemeltenTehetsegesTanulokKivetelevel',16)
,('EbbolRendszeresGyermekvedelmiKedvezmenybenReszesuloTanulokSzama',17)
,('EbbolAlapfokuOktatasbanBetoltotteA16Eletevet',18)
DECLARE @FelevKezdete DATETIME= (
SELECT C_DATUM + IIF(@isFelevi = 1, 0, 1)
FROM T_TANEVRENDJE_OSSZES tr
WHERE C_NAPTIPUSA = IIF(@isFelevi = 1, 1394, 1400)
AND C_TANEVID = @tanevid
AND TOROLT = 'F'
)
DECLARE @FelevVege DATETIME= (
SELECT C_DATUM + 1
FROM T_TANEVRENDJE tr
WHERE C_NAPTIPUSA = IIF(@isFelevi = 1, 1400, 1395)
AND C_TANEVID=@tanevid
AND TOROLT='F')
DECLARE @ertekelesTipus int=IIF(@isFelevi=1,1519,1520)
DECLARE @osszesDb int
DECLARE @cols nvarchar(max)
INSERT INTO #IntezmenyEvfolyamok(
Id
,Evfolyamnev
)
SELECT DISTINCT
dib.ID
,dib.C_NAME
FROM T_OSZTALYCSOPORT ocs
INNER JOIN T_DICTIONARYITEMBASE dib ON dib.ID=ocs.C_EVFOLYAMTIPUSA
SET @cols =
STUFF((SELECT ',' + QUOTENAME(Evfolyamnev)
FROM #IntezmenyEvfolyamok
ORDER BY ID
FOR XML PATH('')),1,1,'')
INSERT INTO #ErintettTanulok (
TanuloId
,Evfolyam
,Neme
,TanuloNev
,OktatasiAzonosito
,TanuloOsztalyNev
,TanuloOsztalyId
,IsKozepesMiatt
,IsRontasMiatt
)
EXEC uspGetLemorzsolodottTanulokByFelhely @feladatEllatasiHelyId, @tanevId, @isFelevi
INSERT INTO #TanuloErtekeles
SELECT
te.ID
,C_TANULOID
,C_ERTEKELESOSZTALYZATID
,C_TIPUSID
FROM T_TANULOERTEKELES te
INNER JOIN #ErintettTanulok fht ON fht.TanuloId=te.C_TANULOID
INNER JOIN T_TANTARGY tgy ON tgy.ID = te.C_TANTARGYID AND tgy.C_ESLTANTARGYKATEGORIAID IS NOT NULL
WHERE te.C_TIPUSID=@ertekelesTipus
DECLARE @Kategoria nvarchar(500)
----------------------------------------------------------------------
-- PRINT '1'
----------------------------------------------------------------------
-- Összes
----------------------------------------------------------------------
SET @Kategoria = 'Osszesen'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,Neme
,Evfolyam
,@Kategoria
FROM #ErintettTanulok
----------------------------------------------------------------------
-- PRINT '2'
----------------------------------------------------------------------
-- Lány
----------------------------------------------------------------------
SET @Kategoria = 'Lany'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,Neme
,Evfolyam
,@Kategoria
FROM #ErintettTanulok
WHERE Neme = 5
----------------------------------------------------------------------
-- PRINT '3'
----------------------------------------------------------------------
-- Összes rontott
----------------------------------------------------------------------
SET @Kategoria = 'AFelevErtekelesenelMinositesenelATanuloEgyTizedesjegyigSzamitottTanulmanyiAtlagaAMagatartasEsSzorgalomErtekelesetMinositesetNemBeleszamitvaNemEriElKozepes3Szintet'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,Neme
,Evfolyam
,@Kategoria
FROM #ErintettTanulok
WHERE IsKozepesMiatt = 1
----------------------------------------------------------------------
-- PRINT '4'
----------------------------------------------------------------------
-- Legalább 1.1-et rontott
----------------------------------------------------------------------
SET @Kategoria = 'AzEvVegiJegyekAlapjanAFeleviJegyekhezKepestLegalabb11NyiAtlagotRontoTanulokSzama'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,Neme
,Evfolyam
,@Kategoria
FROM #ErintettTanulok
WHERE IsRontasMiatt = 1
----------------------------------------------------------------------
-- PRINT '5'
----------------------------------------------------------------------
-- egy, vagy több tantárgyból elégtelen osztályzat
----------------------------------------------------------------------
SET @Kategoria = 'AFelevErtekelesenelMinositesenelATanuloEgyVagyTobbTantargybolElegtelen1OsztalyzatotKapott'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,Neme
,Evfolyam
,@Kategoria
FROM #TanuloErtekeles te
INNER JOIN #ErintettTanulok fht ON fht.TanuloId=te.Tanulo
WHERE te.Tipus = @ertekelesTipus AND te.Ertekeles = 1501
----------------------------------------------------------------------
-- PRINT '6'
----------------------------------------------------------------------
-- félév, magatartás, 2
----------------------------------------------------------------------
SET @Kategoria = 'AFelevMagatartasanakErtekelesenelMinositesenelATanuloRossz2ErtekelestKapott'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,Neme
,Evfolyam
,@Kategoria
FROM #ErintettTanulok fht
INNER JOIN T_TANULOERTEKELES te ON te.C_TANULOID=fht.TanuloId AND te.C_ISMAGATARTASSZORGALOM = 'T'
AND (te.C_MAGATARTASERTEKID=1558 OR te.C_MAGATARTASOSZTALYZATID=1502)
----------------------------------------------------------------------
-- PRINT '7'
----------------------------------------------------------------------
-- félév, szorgalom, 2
----------------------------------------------------------------------
SET @Kategoria = 'AFelevSzorgalmanakErtekelesenelMinositesenelATanuloHanyag2ErtekelestKapott'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,Neme
,Evfolyam
,@Kategoria
FROM #ErintettTanulok fht
INNER JOIN T_TANULOERTEKELES te ON te.C_TANULOID=fht.TanuloId AND te.C_ISMAGATARTASSZORGALOM = 'T'
AND (te.C_SZORGALOMERTEKID = 1562 OR te.C_SZORGALOMOSZTALYZATID=1502) AND fht.Neme=5
----------------------------------------------------------------------
-- PRINT '8'
----------------------------------------------------------------------
-- adott évben évismétlés
----------------------------------------------------------------------
SET @Kategoria = 'AzAdottTanitasiEvbenEvismetlesreKotelezett'
IF @isFelevi = 0
BEGIN
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,Neme
,Evfolyam
,@Kategoria
FROM #ErintettTanulok fht
INNER JOIN (
SELECT COUNT(DISTINCT fht.TanuloId) db,fht.TanuloId
FROM #ErintettTanulok fht
INNER JOIN #TanuloErtekeles te ON te.Tanulo=fht.TanuloId AND te.Ertekeles=1501
GROUP BY fht.TanuloId
HAVING COUNT(*)>=4) x ON x.TanuloId = fht.TanuloId
END
----------------------------------------------------------------------
-- PRINT '9'
----------------------------------------------------------------------
-- Félévben 50 órát elérő igazolatlan hiányzás
----------------------------------------------------------------------
SET @Kategoria = 'AFelevbenATanulo50OratMeghaladoHianyzassalRendelkezik'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,fht.Neme
,Evfolyam
,@Kategoria
FROM #ErintettTanulok fht
INNER JOIN (
SELECT fht.TanuloId AS Tanulo FROM T_TANULOMULASZTAS tm
INNER JOIN #ErintettTanulok fht on fht.TanuloId=tm.C_ORATANULOIID
INNER JOIN T_TANITASIORA tao on tao.ID=tm.C_TANITASIORAKID AND tao.C_DATUM >= @FelevKezdete AND tao.C_DATUM<@FelevVege
LEFT JOIN T_CSOPORT cs ON cs.ID = tao.C_OSZTALYCSOPORTID AND cs.C_TIPUSA NOT IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId))
WHERE tm.C_IGAZOLT='F' AND cs.ID IS NULL
GROUP BY fht.TanuloId
HAVING COUNT(Tanuloid) > 50) x ON x.Tanulo = fht.TanuloId
----------------------------------------------------------------------
-- PRINT '10'
----------------------------------------------------------------------
-- Szülő kérésére magántanuló
----------------------------------------------------------------------
SET @Kategoria = 'AFelevbenSzuloiKeresreMagantanulovaValtTanulo'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,fht.Neme
,Evfolyam
,@Kategoria
FROM #ErintettTanulok fht
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_TANULOID=fht.TanuloId AND tcs.C_OSZTALYCSOPORTID=fht.TanuloOsztalyId
INNER JOIN T_TANULOTANUGYIADATOK tta ON tcs.ID=tta.C_TANULOCSOPORTID AND tta.C_MAGANTANULOSAGANAKOKAID IN (663, 664)
----------------------------------------------------------------------
-- PRINT '11'
----------------------------------------------------------------------
-- Menekült, menedékjoggal rendelkező
----------------------------------------------------------------------
SET @Kategoria = 'AFelevbenMenekultOltalmazottMenedekesTanulokSzama'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,fht.Neme
,Evfolyam
,@Kategoria
FROM #ErintettTanulok fht
INNER JOIN T_TANULO t ON t.C_MENEDEKJOGGALRENDELKEZO='T' AND fht.TanuloId=t.ID
----------------------------------------------------------------------
-- PRINT '12'
----------------------------------------------------------------------
-- Félévben veszélyeztetett tanulók száma
----------------------------------------------------------------------
SET @Kategoria = 'AFelevbenVeszelyezeztetteValtTanulokSzama'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,fht.Neme
,Evfolyam
,@Kategoria
FROM #ErintettTanulok fht
INNER JOIN T_TANULO t ON t.ID=fht.TanuloId AND t.C_VESZELYEZTETETT='T'
----------------------------------------------------------------------
-- PRINT '13'
----------------------------------------------------------------------
-- ideiglenes hatállyal elhelyezett vagy nevelésbe vett tanulók
----------------------------------------------------------------------
SET @Kategoria = 'AFelevbenIdeiglenesHatallyalElhelyezettVagyNevelesbeVettTanulokSzama'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,fht.Neme
,Evfolyam
,@Kategoria
FROM #ErintettTanulok fht
INNER JOIN T_TANULO t ON t.C_ALLAMIGONDOZOTT='T' AND fht.TanuloId=t.ID
----------------------------------------------------------------------
-- PRINT '14'
----------------------------------------------------------------------
-- legalább 2 feltétel teljesül
----------------------------------------------------------------------
INSERT INTO #KetFeltetelTanulok
SELECT DISTINCT
ftt.TanuloId
,ftt.Evfolyam
,ftt.Neme
,ftt.TanuloNev
,ftt.OktatasiAzonosito
,ftt.TanuloOsztalyNev
,IIF((SELECT COUNT(1)
FROM T_TANULOMULASZTAS tm
INNER JOIN T_TANITASIORA tno ON tno.ID = tm.C_TANITASIORAKID AND tno.C_DATUM > @FelevKezdete AND tno.C_DATUM < @FelevVege
LEFT JOIN T_CSOPORT cs ON cs.ID = tno.C_OSZTALYCSOPORTID
WHERE (cs.ID IS NULL OR cs.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId))) AND tm.C_IGAZOLT='T' AND tm.C_TIPUS = 1500 AND tm.C_ORATANULOIID = ftt.TanuloId) > 100, 1, 0) AS IsHianyzasMiatt
,IIF((SELECT COUNT(1)
FROM T_TANULO t
WHERE t.ID = ftt.TanuloId
AND (t.C_SAJATOSNEVELESU='T' OR t.C_BTMPROBLEMAS='T' OR t.C_HATRANYOSHELYZETU IN (1122, 1123))) > 0, 1, 0) AS IsKiemeltMiatt
,IIF((SELECT COUNT(1)
FROM T_TANULO t
WHERE t.ID = ftt.TanuloId
AND t.C_RENDSZERESGYERMEKVEDELMIKEDV IS NOT NULL) > 0, 1, 0) AS IsGyermekVedelemMiatt
,IIF((SELECT COUNT(1)
FROM T_FELHASZNALO t
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_TANULOID=t.ID
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID=tcs.C_OSZTALYCSOPORTID
INNER JOIN T_TANULOTANUGYIADATOK tta ON tta.C_TANULOCSOPORTID = tcs.ID AND tta.C_ISESL16EVESUTANBELEPETT = 'T'
INNER JOIN T_FELADATELLATASIHELY fh ON fh.ID=ocs.C_FELADATELLATASIHELYID AND fh.C_OKTATASINEVELESIFELADATTIPUS IN (1158,1178)
AND fh.ID = @feladatEllatasiHelyId
WHERE t.ID = ftt.TanuloId) > 0, 1, 0) AS IsAltalanosIskolaMiatt
FROM #ErintettTanulok ftt
DELETE kt FROM #KetFeltetelTanulok kt WHERE (kt.IsHianyzasMiatt + kt.IsKiemeltMiatt + kt.IsGyermekVedelemMiatt + kt.IsAltalanosIskolaMiatt) < 2
SET @Kategoria = 'KettoFeltetelTelejesuleseEsetenLemorzsolodassalVeszelyeztetettTanulo'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,Neme
,Evfolyam
,@Kategoria
FROM #KetFeltetelTanulok
----------------------------------------------------------------------
-- PRINT '15'
----------------------------------------------------------------------
-- kettő feltétel esetén ... félévben 100 órát elért igazolt hiányzás
----------------------------------------------------------------------
SET @Kategoria = 'EbbolAFelevben100OratEleroIgazoltHianyzassalRendelkezoTanulokSzama'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,kt.Neme
,Evfolyam
,@Kategoria
FROM #KetFeltetelTanulok kt
WHERE kt.IsHianyzasMiatt = 1
----------------------------------------------------------------------
-- PRINT '16'
----------------------------------------------------------------------
-- kettő feltétel ... kiemelet figyelmet igénylő --sni, btmn, hh, 3h
----------------------------------------------------------------------
SET @Kategoria = 'EbbolKiemeltFigyelmetIgenyloTanulokSzamaAKiemeltenTehetsegesTanulokKivetelevel'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,kt.Neme
,Evfolyam
,@Kategoria
FROM #KetFeltetelTanulok kt
WHERE kt.IsKiemeltMiatt = 1
----------------------------------------------------------------------
-- PRINT '17'
----------------------------------------------------------------------
-- kettő feltétel ... --rendszeres gyermekvédelmi támogatás
----------------------------------------------------------------------
SET @Kategoria = 'EbbolRendszeresGyermekvedelmiKedvezmenybenReszesuloTanulokSzama'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,kt.Neme
,Evfolyam
,@Kategoria
FROM #KetFeltetelTanulok kt
WHERE kt.IsGyermekVedelemMiatt = 1
----------------------------------------------------------------------
-- PRINT '18'
----------------------------------------------------------------------
-- kettő feltétel ... alapfokú oktatásban 16
----------------------------------------------------------------------
SET @Kategoria = 'EbbolAlapfokuOktatasbanBetoltotteA16Eletevet'
INSERT INTO #Tanulok(
TanuloNev
,Neme
,Evfolyam
,Kategoria
) SELECT DISTINCT
TanuloNev + ' - ' + OktatasiAzonosito + '; ' + TanuloOsztalyNev
,kt.Neme
,Evfolyam
,@Kategoria
FROM #KetFeltetelTanulok kt
WHERE kt.IsAltalanosIskolaMiatt = 1
INSERT INTO #TanulokOsszes(
Kategoria
,Osszes
,OsszesLany
) SELECT
Kategoria
,COUNT(TanuloNev)
,SUM(IIF(Neme = 5,1,0))
FROM #Tanulok
GROUP BY Kategoria
DECLARE @query nvarchar(max)
set @query =
'SELECT
KategoriaNev
,Sorrend
,rn
,' + @cols + '
,Osszes
,OsszesLany
INTO #RetTable
FROM (
SELECT
k.KategoriaNev
,t.TanuloNev
,ROW_NUMBER() OVER (PARTITION BY t.Kategoria,t.Evfolyam ORDER BY t.TanuloNev) rn
,dib.C_NAME as Evfolyam
,k.Sorrend
,Ossz.Osszes
,Ossz.OsszesLany
FROM #Kategoria k
LEFT JOIN #Tanulok t ON t.Kategoria = k.KategoriaNev
LEFT JOIN T_DICTIONARYITEMBASE dib ON dib.ID = t.Evfolyam
LEFT JOIN #TanulokOsszes ossz ON ossz.Kategoria = k.KategoriaNev
) x
PIVOT (
MIN(TanuloNev)
FOR Evfolyam IN (' + @cols + ')
) p
SELECT
KategoriaNev as Leiras
,'+@cols+'
,Osszes as Összesen
,OsszesLany as Lány
FROM #RetTable
ORDER BY Sorrend,rn'
EXEC sp_executesql @query
END
GO

View File

@@ -0,0 +1,847 @@
DROP PROCEDURE IF EXISTS sp_GetESL_A03T01_1
GO
CREATE PROCEDURE [dbo].[sp_GetESL_A03T01_1]
@tanevId int
,@feladatEllatasiHelyId int
,@isFelevi int = 0 /* 1 - előző tanév végi és féléves; 0 - félévtől év végi */
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #tmpRet(
Kategoria nvarchar(250)
,Evfolyam int
,Darabszam int
,Sorszam int
)
CREATE TABLE #tmpRetSum(
Kategoria nvarchar(250)
,Osszesen int
,OsszesLany int
)
CREATE TABLE #KetFeltetelTanulok (
Evfolyam int
,TanuloId int
,Neme int
,IsHianyzasMiatt int
,IsKiemeltMiatt int
,IsGyermekVedelemMiatt int
,IsAltalanosIskolaMiatt int
,INDEX IX_01 (TanuloId)
)
CREATE TABLE #ErintettTanulok (
Evfolyam int
,TanuloId int
,Neme int
,TanuloNev nvarchar(255)
,Oktatasiazonosito nvarchar(11)
,TanuloOsztalyNev nvarchar(255)
,IsKozepesMiatt int
,IsRontasMiatt int
,TanuloOsztalyId int
,INDEX IX_01 (TanuloId)
)
CREATE TABLE #TanuloErtekeles (
Id int
,Tanulo int
,Ertekeles int
,Tipus int
,INDEX IX_01 (Tanulo)
)
DECLARE
@FelevKezdete date
,@FelevVege date
,@ertekelesTipus int
,@Kategoria nvarchar(250)
,@OsszesLany int
SET @ertekelesTipus = IIF(@isFelevi = 1, 1519, 1520) /* féléves vagy tév végi jegy */
SET @FelevKezdete = (
SELECT C_DATUM + IIF(@isFelevi = 1, 0, 1)
FROM T_TANEVRENDJE tr
WHERE C_NAPTIPUSA = IIF(@isFelevi = 1, 1394, 1400)
AND tr.C_TANEVID = @tanevid AND tr.TOROLT='F')
SET @FelevVege = (
SELECT C_DATUM + 1
FROM T_TANEVRENDJE tr
WHERE C_NAPTIPUSA = IIF(@isFelevi = 1, 1400, 1395)
AND tr.C_TANEVID = @tanevid AND tr.TOROLT='F')
INSERT INTO #ErintettTanulok (
TanuloId
,Evfolyam
,Neme
,TanuloNev
,OktatasiAzonosito
,TanuloOsztalyNev
,TanuloOsztalyId
,IsKozepesMiatt
,IsRontasMiatt
)
EXEC uspGetLemorzsolodottTanulokByFelhely @feladatEllatasiHelyId, @tanevId, @isFelevi
INSERT INTO #TanuloErtekeles
SELECT
te.ID
,C_TANULOID
,C_ERTEKELESOSZTALYZATID
,C_TIPUSID
FROM T_TANULOERTEKELES te
INNER JOIN #ErintettTanulok fht ON fht.TanuloId=te.C_TANULOID
INNER JOIN T_TANTARGY tgy ON tgy.ID = te.C_TANTARGYID AND (tgy.C_FOTARGYE = 'T' OR tgy.C_ALTANTARGYKENTNYOMTATVANYBAN='T')
AND C_ESLTANTARGYKATEGORIAID IS NOT NULL AND tgy.TOROLT='F'
WHERE te.C_TIPUSID=@ertekelesTipus AND te.TOROLT='F' AND te.C_TANEVID = @tanevId
----------------------------------------------------------------------
-- PRINT '1'
----------------------------------------------------------------------
-- Szum
----------------------------------------------------------------------
SET @Kategoria = 'Osszesen'
SELECT @OsszesLany = COUNT(DISTINCT TanuloId)
FROM #ErintettTanulok fh
WHERE fh.Neme = 5
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT TanuloId)
,1
FROM #ErintettTanulok
GROUP BY Evfolyam
INSERT INTO #tmpRetSum(
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '2'
----------------------------------------------------------------------
-- Szum lány
----------------------------------------------------------------------
SET @Kategoria = 'Lany'
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT TanuloId)
,2
FROM #ErintettTanulok
WHERE Neme = 5
GROUP BY Evfolyam
INSERT INTO #tmpRetSum(
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '3'
----------------------------------------------------------------------
-- Összes rontott
----------------------------------------------------------------------
SET @Kategoria = 'AFelevErtekelesenelMinositesenelATanuloEgyTizedesjegyigSzamitottTanulmanyiAtlagaAMagatartasEsSzorgalomErtekelesetMinositesetNemBeleszamitvaNemEriElKozepes3Szintet'
SELECT @Osszeslany = COUNT(DISTINCT fht.TanuloId)
FROM #ErintettTanulok fht
WHERE fht.Neme=5 AND IsKozepesMiatt = 1
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT TanuloId)
,3
FROM #ErintettTanulok
WHERE IsKozepesMiatt = 1
GROUP BY Evfolyam
INSERT INTO #tmpRetSum(
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '4'
----------------------------------------------------------------------
-- Legalább 1.1-et rontott
----------------------------------------------------------------------
SET @Kategoria = 'AzEvVegiJegyekAlapjanAFeleviJegyekhezKepestLegalabb11NyiAtlagotRontoTanulokSzama'
SELECT @OsszesLany = COUNT(DISTINCT fht.TanuloId)
FROM #ErintettTanulok fht
WHERE fht.Neme=5 AND IsRontasMiatt = 1
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT TanuloId)
,4
FROM #ErintettTanulok
WHERE IsRontasMiatt = 1
GROUP BY Evfolyam
INSERT INTO #tmpRetSum(
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '5'
----------------------------------------------------------------------
-- egy, vagy több tantárgyból elégtelen osztályzat
----------------------------------------------------------------------
SET @Kategoria = 'AFelevErtekelesenelMinositesenelATanuloEgyVagyTobbTantargybolElegtelen1OsztalyzatotKapott'
SELECT @OsszesLany = COUNT(DISTINCT fht.TanuloId)
FROM #TanuloErtekeles te
INNER JOIN #ErintettTanulok fht ON fht.TanuloId=te.Tanulo AND fht.Neme = 5
WHERE te.Tipus = @ertekelesTipus AND te.Ertekeles = 1501
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT t.TanuloId)
,5
FROM #ErintettTanulok t
INNER JOIN #TanuloErtekeles te ON te.Tanulo = t.TanuloId
WHERE te.Tipus = @ertekelesTipus AND te.Ertekeles = 1501
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '6'
----------------------------------------------------------------------
-- félév, magatartás, 2
----------------------------------------------------------------------
SET @Kategoria = 'AFelevMagatartasanakErtekelesenelMinositesenelATanuloRossz2ErtekelestKapott'
SELECT @OsszesLany = COUNT(DISTINCT fht.TanuloId)
FROM #ErintettTanulok fht
INNER JOIN T_TANULOERTEKELES te ON te.C_TANULOID=fht.TanuloId AND fht.Neme = 5 AND te.C_ISMAGATARTASSZORGALOM = 'T'
AND (te.C_MAGATARTASERTEKID=1558 OR te.C_MAGATARTASOSZTALYZATID=1502) AND te.C_TIPUSID = @ertekelesTipus
AND te.TOROLT='F'
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT t.TanuloId)
,6
FROM #ErintettTanulok t
INNER JOIN T_TANULOERTEKELES te ON te.C_TANULOID=t.TanuloId AND te.C_ISMAGATARTASSZORGALOM = 'T'
AND (te.C_MAGATARTASERTEKID=1558 OR te.C_MAGATARTASOSZTALYZATID=1502) AND te.C_TIPUSID = @ertekelesTipus
AND te.TOROLT='F'
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '7'
----------------------------------------------------------------------
-- félév, szorgalom, 2
----------------------------------------------------------------------
SET @Kategoria = 'AFelevSzorgalmanakErtekelesenelMinositesenelATanuloHanyag2ErtekelestKapott'
SELECT @OsszesLany = COUNT(DISTINCT fht.TanuloId)
FROM #ErintettTanulok fht
INNER JOIN T_TANULOERTEKELES te ON te.C_TANULOID=fht.TanuloId AND fht.Neme = 5 AND te.C_ISMAGATARTASSZORGALOM = 'T'
AND (te.C_SZORGALOMERTEKID = 1562 OR te.C_SZORGALOMOSZTALYZATID=1502)
AND te.TOROLT='F' AND te.C_TIPUSID = @ertekelesTipus
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT t.TanuloId)
,7
FROM #ErintettTanulok t
INNER JOIN T_TANULOERTEKELES te ON te.C_TANULOID=t.TanuloId AND te.C_ISMAGATARTASSZORGALOM = 'T'
AND (te.C_SZORGALOMERTEKID = 1562 OR te.C_SZORGALOMOSZTALYZATID=1502)
AND te.TOROLT='F' AND te.C_TIPUSID = @ertekelesTipus
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '8'
----------------------------------------------------------------------
-- adott évben évismétlés
----------------------------------------------------------------------
SET @Kategoria = 'AzAdottTanitasiEvbenEvismetlesreKotelezett'
IF @isFelevi = 0
BEGIN
SET @OsszesLany = (
SELECT SUM(x.db) FROM(
SELECT COUNT(DISTINCT fht.TanuloId) db
FROM #ErintettTanulok fht
INNER JOIN #tanuloErtekeles te ON te.Tanulo=fht.TanuloId AND te.Ertekeles=1501
WHERE fht.Neme=5
GROUP BY fht.TanuloId
HAVING COUNT(*)>=4) x)
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT x.TanuloId)
,8
FROM(
SELECT
t.TanuloId
,t.Evfolyam
FROM #ErintettTanulok t
INNER JOIN #tanuloErtekeles te ON te.Tanulo=t.TanuloId AND te.Ertekeles=1501
GROUP BY t.TanuloId,t.Evfolyam
HAVING COUNT(*)>=4) x
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
END
----------------------------------------------------------------------
-- PRINT '9'
----------------------------------------------------------------------
-- Félévben 50 órát elérő igazolatlan hiányzás
----------------------------------------------------------------------
SET @Kategoria = 'AFelevbenATanulo50OratMeghaladoHianyzassalRendelkezik'
SELECT @OsszesLany = COUNT(DISTINCT Tanulo) FROM (
SELECT
fht.Tanuloid AS Tanulo
FROM T_TANULOMULASZTAS tm
INNER JOIN #ErintettTanulok fht on fht.TanuloId=tm.C_ORATANULOIID AND fht.Neme=5
INNER JOIN T_TANITASIORA tao on tao.ID=tm.C_TANITASIORAKID AND tao.C_DATUM >= @FelevKezdete AND tao.C_DATUM < @FelevVege
AND tao.TOROLT='F'
LEFT JOIN T_CSOPORT cs ON cs.ID = tao.C_OSZTALYCSOPORTID AND cs.C_TIPUSA NOT IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId))
AND cs.TOROLT='F'
WHERE tm.C_IGAZOLT='F' AND cs.ID IS NULL AND tm.TOROLT='F'
GROUP BY fht.TanuloId
HAVING COUNT(Tanuloid) > 50) a
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT x.TanuloId)
,9
FROM(
SELECT
fht.Tanuloid
,fht.Evfolyam
FROM T_TANULOMULASZTAS tm
INNER JOIN #ErintettTanulok fht ON fht.TanuloId=tm.C_ORATANULOIID
INNER JOIN T_TANITASIORA tao ON tao.ID=tm.C_TANITASIORAKID AND tao.C_DATUM >= @FelevKezdete AND tao.C_DATUM < @FelevVege
AND tao.TOROLT='F'
LEFT JOIN T_CSOPORT cs ON cs.ID = tao.C_OSZTALYCSOPORTID
AND cs.C_TIPUSA NOT IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId))
AND cs.TOROLT='F'
WHERE tm.C_IGAZOLT='F' AND cs.ID IS NULL AND tm.TOROLT='F'
GROUP BY fht.TanuloId, fht.Evfolyam
HAVING COUNT(TanuloId) > 50) x
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '10'
----------------------------------------------------------------------
-- Szülő kérésére magántanuló
----------------------------------------------------------------------
SET @Kategoria = 'AFelevbenSzuloiKeresreMagantanulovaValtTanulo'
SELECT @OsszesLany = COUNT(DISTINCT fht.TanuloId)
FROM #ErintettTanulok fht
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID=fht.TanuloOsztalyId AND tcs.C_TANULOID=fht.TanuloId
AND tcs.TOROLT='F'
INNER JOIN T_TANULOTANUGYIADATOK tta ON tta.C_TANULOCSOPORTID=tcs.ID AND tta.C_MAGANTANULOSAGANAKOKAID IN (663, 664)
AND tta.TOROLT='F'
WHERE fht.Neme=5
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT fht.TanuloId)
,10
FROM #ErintettTanulok fht
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID=fht.TanuloOsztalyId AND tcs.C_TANULOID=fht.TanuloId
AND tcs.TOROLT='F'
INNER JOIN T_TANULOTANUGYIADATOK tta ON tta.C_TANULOCSOPORTID=tcs.ID AND tta.C_MAGANTANULOSAGANAKOKAID IN (663, 664)
AND tta.TOROLT='F'
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '11'
----------------------------------------------------------------------
-- Menekült, menedékjoggal rendelkező
----------------------------------------------------------------------
SET @Kategoria = 'AFelevbenMenekultOltalmazottMenedekesTanulokSzama'
SELECT @OsszesLany = COUNT(DISTINCT fht.TanuloId)
FROM #ErintettTanulok fht
INNER JOIN T_TANULO t ON t.C_MENEDEKJOGGALRENDELKEZO='T' AND fht.TanuloId=t.ID AND fht.Neme=5
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT fht.TanuloId)
,11
FROM #ErintettTanulok fht
INNER JOIN T_TANULO t ON t.C_MENEDEKJOGGALRENDELKEZO='T' AND fht.TanuloId=t.ID
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '12'
----------------------------------------------------------------------
-- Félévben veszélyeztetett tanulók száma
----------------------------------------------------------------------
SET @Kategoria = 'AFelevbenVeszelyezeztetteValtTanulokSzama'
SELECT @OsszesLany = COUNT(DISTINCT TanuloId)
FROM #ErintettTanulok fht
INNER JOIN T_TANULO t on t.ID=fht.TanuloId AND t.C_VESZELYEZTETETT='T' AND fht.Neme=5
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT fht.TanuloId)
,12
FROM #ErintettTanulok fht
INNER JOIN T_TANULO t on t.ID=fht.TanuloId AND t.C_VESZELYEZTETETT='T'
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '13'
----------------------------------------------------------------------
-- ideiglenes hatállyal elhelyezett vagy nevelésbe vett tanulók
----------------------------------------------------------------------
SET @Kategoria = 'AFelevbenIdeiglenesHatallyalElhelyezettVagyNevelesbeVettTanulokSzama'
SELECT @OsszesLany = COUNT(DISTINCT fht.TanuloId)
FROM #ErintettTanulok fht
INNER JOIN T_TANULO t ON t.C_ALLAMIGONDOZOTT='T' AND fht.TanuloId=t.ID AND fht.Neme=5
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT fht.TanuloId)
,13
FROM #ErintettTanulok fht
INNER JOIN T_TANULO t ON t.C_ALLAMIGONDOZOTT='T' AND fht.TanuloId=t.ID
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '14'
----------------------------------------------------------------------
-- legalább 2 feltétel teljesül
----------------------------------------------------------------------
-- Alapadatok
INSERT INTO #KetFeltetelTanulok
SELECT DISTINCT
ftt.Evfolyam
,ftt.TanuloId
,ftt.Neme
,IIF((SELECT COUNT(1)
FROM T_TANULOMULASZTAS tm
INNER JOIN T_TANITASIORA tno ON tno.ID = tm.C_TANITASIORAKID
AND tno.C_DATUM >= @FelevKezdete
AND tno.C_DATUM < @FelevVege
AND tno.TOROLT='F'
LEFT JOIN T_CSOPORT cs ON cs.ID = tno.C_OSZTALYCSOPORTID AND cs.TOROLT='F'
WHERE (cs.ID IS NULL OR cs.C_TIPUSA IN (SELECT ID FROM fnGetTanoraiCeluCsoportTipusok(@tanevId)))
AND tm.TOROLT='F'
AND tm.C_IGAZOLT='T'
AND tm.C_TIPUS = 1500
AND tm.C_ORATANULOIID = ftt.TanuloId) > 100, 1, 0) AS IsHianyzasMiatt
,IIF((SELECT COUNT(1)
FROM T_TANULO t
WHERE t.ID = ftt.TanuloId
AND (t.C_SAJATOSNEVELESU='T' OR t.C_BTMPROBLEMAS='T' OR t.C_HATRANYOSHELYZETU IN (1122, 1123))) > 0, 1, 0) AS IsKiemeltMiatt
,IIF((SELECT COUNT(1)
FROM T_TANULO t
WHERE t.ID = ftt.TanuloId
AND t.C_RENDSZERESGYERMEKVEDELMIKEDV IS NOT NULL) > 0, 1, 0) AS IsGyermekVedelemMiatt
,IIF((SELECT COUNT(1)
FROM T_FELHASZNALO t
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_TANULOID=t.ID AND tcs.TOROLT='F'
INNER JOIN T_OSZTALYCSOPORT ocs ON ocs.ID=tcs.C_OSZTALYCSOPORTID AND ocs.TOROLT='F'
INNER JOIN T_TANULOTANUGYIADATOK tta ON tta.C_TANULOCSOPORTID = tcs.ID AND tta.C_ISESL16EVESUTANBELEPETT = 'T' AND tta.TOROLT='F'
INNER JOIN T_FELADATELLATASIHELY fh ON fh.ID=ocs.C_FELADATELLATASIHELYID AND fh.C_OKTATASINEVELESIFELADATTIPUS IN (1158,1178)
AND fh.ID = @feladatEllatasiHelyId AND fh.TOROLT='F'
WHERE t.ID = ftt.TanuloId) > 0, 1, 0) AS IsAltalanosIskolaMiatt
FROM #ErintettTanulok ftt
DELETE kt FROM #KetFeltetelTanulok kt WHERE (kt.IsHianyzasMiatt + kt.IsKiemeltMiatt + kt.IsGyermekVedelemMiatt + kt.IsAltalanosIskolaMiatt) < 2
--Alapadatok vége
SET @Kategoria = 'KettoFeltetelTelejesuleseEsetenLemorzsolodassalVeszelyeztetettTanulo'
SELECT @OsszesLany = COUNT(DISTINCT ft.TanuloId)
FROM #KetFeltetelTanulok ft
WHERE ft.Neme=5
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT t.TanuloId)
,14
FROM #KetFeltetelTanulok t
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '15'
----------------------------------------------------------------------
-- kettő feltétel esetén ... félévben 100 órát elért igazolt hiányzás
----------------------------------------------------------------------
SET @Kategoria = 'EbbolAFelevben100OratEleroIgazoltHianyzassalRendelkezoTanulokSzama'
SELECT @OsszesLany = COUNT(DISTINCT kt.TanuloId)
FROM #KetFeltetelTanulok kt
WHERE kt.IsHianyzasMiatt = 1 AND kt.Neme = 5
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT t.TanuloId)
,15
FROM #KetFeltetelTanulok t
WHERE t.IsHianyzasMiatt = 1
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '16'
----------------------------------------------------------------------
-- kettő feltétel ... kiemelet figyelmet igénylő --sni, btmn, hh, 3h
----------------------------------------------------------------------
SET @Kategoria = 'EbbolKiemeltFigyelmetIgenyloTanulokSzamaAKiemeltenTehetsegesTanulokKivetelevel'
SELECT @OsszesLany = COUNT(DISTINCT kt.TanuloId)
FROM #KetFeltetelTanulok kt
WHERE kt.IsKiemeltMiatt = 1 AND kt.Neme = 5
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT t.TanuloId)
,16
FROM #KetFeltetelTanulok t
WHERE t.IsKiemeltMiatt = 1
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '17'
----------------------------------------------------------------------
-- kettő feltétel ... --rendszeres gyermekvédelmi támogatás
----------------------------------------------------------------------
SET @Kategoria = 'EbbolRendszeresGyermekvedelmiKedvezmenybenReszesuloTanulokSzama'
SELECT @OsszesLany = COUNT(DISTINCT kt.TanuloId)
FROM #KetFeltetelTanulok kt
WHERE kt.IsGyermekVedelemMiatt = 1 AND kt.Neme = 5
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(DISTINCT t.TanuloId)
,17
FROM #KetFeltetelTanulok t
WHERE t.IsGyermekVedelemMiatt = 1
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- PRINT '18'
----------------------------------------------------------------------
-- kettő feltétel ... alapfokú oktatásban 16
----------------------------------------------------------------------
SET @Kategoria = 'EbbolAlapfokuOktatasbanBetoltotteA16Eletevet'
SELECT @OsszesLany = COUNT(DISTINCT kt.TanuloId)
FROM #KetFeltetelTanulok kt
WHERE kt.IsAltalanosIskolaMiatt = 1 AND kt.Neme = 5
INSERT INTO #tmpRet(
Kategoria
,Evfolyam
,Darabszam
,Sorszam
) SELECT
@Kategoria
,Evfolyam
,COUNT(t.TanuloId)
,17
FROM #KetFeltetelTanulok t
WHERE t.IsAltalanosIskolaMiatt = 1
GROUP BY Evfolyam
INSERT INTO #tmpRetSum (
Kategoria
,Osszesen
,OsszesLany
) SELECT
@Kategoria
,SUM(Darabszam)
,@OsszesLany
FROM #tmpRet
WHERE Kategoria = @Kategoria
----------------------------------------------------------------------
-- SELECT
----------------------------------------------------------------------
SELECT
t.Kategoria
,t.Evfolyam
,ISNULL(t.Darabszam,0) as Darabszam
,s.Osszesen
,s.OsszesLany
FROM #tmpRet t
INNER JOIN #tmpRetSum s ON s.Kategoria = t.Kategoria
ORDER BY t.Sorszam
END
GO

View File

@@ -0,0 +1,88 @@
DROP PROCEDURE IF EXISTS [dbo].[sp_GetESL_A03T02_1]
GO
CREATE PROCEDURE [dbo].[sp_GetESL_A03T02_1]
@tanevId int
,@feladatEllatasiHelyId int
,@isFelevi int = 0
AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #TantargyiStat(
Darabszam int
,OsszesLany int
,EslTgyKatId int
,Evfolyam int
,Sorrend int
)
CREATE TABLE #ErintettTanulok (
Evfolyam int
,TanuloId int
,Neme int
,TanuloNev nvarchar(255)
,Oktatasiazonosito nvarchar(11)
,TanuloOsztalyNev nvarchar(255)
,IsKozepesMiatt int
,IsRontasMiatt int
,TanuloOsztalyId int
,INDEX IX_01 (TanuloId)
)
DECLARE @ertekelesTipus int = IIF(@isFelevi = 0,1520,1519)
--1. érintett tanulók leválogatása
INSERT INTO #ErintettTanulok (
TanuloId
,Evfolyam
,Neme
,TanuloNev
,OktatasiAzonosito
,TanuloOsztalyNev
,TanuloOsztalyId
,IsKozepesMiatt
,IsRontasMiatt
)
EXEC uspGetLemorzsolodottTanulokByFelhely @feladatEllatasiHelyId, @tanevId, @isFelevi
INSERT INTO #TantargyiStat(
Darabszam
,OsszesLany
,EslTgyKatId
,Evfolyam
,Sorrend
)
SELECT
COUNT(te.C_TANULOID) as Osszes
,SUM(IIF(fht.Neme=5,1,0)) as OsszesLany
,eslTgyKat.ID
,fht.Evfolyam
,eslTgyKat.C_ORDER
FROM T_TANULOERTEKELES te
INNER JOIN T_TANTARGY tgy ON tgy.ID=te.C_TANTARGYID AND (tgy.C_FOTARGYE = 'T' OR tgy.C_ALTANTARGYKENTNYOMTATVANYBAN='T') AND tgy.TOROLT='F'
INNER JOIN #ErintettTanulok fht on fht.TANULOID=te.C_TANULOID
INNER JOIN T_DICTIONARYITEMBASE eslTgyKat ON eslTgyKat.ID = tgy.C_ESLTANTARGYKATEGORIAID AND eslTgyKat.C_TYPE = 'EslTantargyKategoria'
AND eslTgykat.TOROLT='F' AND eslTgyKat.C_TANEVID = te.C_TANEVID
WHERE te.C_ERTEKELESOSZTALYZATID = 1501 AND te.C_TIPUSID = @ertekelesTipus AND te.C_TANEVID = @tanevId AND te.TOROLT='F'
GROUP BY eslTgyKat.ID,eslTgyKat.C_ORDER,fht.Evfolyam
SELECT
SUM(Darabszam) as Osszes
,SUM(OsszesLany) as OsszesLany
,EslTgyKatId
INTO #TantargyiStatSum
FROM #TantargyiStat
GROUP BY EslTgyKatId
SELECT
tgy.eslTgyKatId
,tgy.Evfolyam
,tgy.Darabszam
,s.Osszes
,s.OsszesLany
FROM #TantargyiStat tgy
INNER JOIN #TantargyiStatSum s ON s.eslTgyKatId = tgy.eslTgyKatId
ORDER BY tgy.Sorrend,tgy.Evfolyam
END
GO

View File

@@ -0,0 +1,204 @@
DROP PROCEDURE IF EXISTS uspGetLemorzsolodottTanulokByFelhely
GO
CREATE PROCEDURE [dbo].[uspGetLemorzsolodottTanulokByFelhely] (@feladatEllatasiHelyId int, @tanevId int, @isFelevi int) AS
BEGIN
SET NOCOUNT ON;
CREATE TABLE #Osztalyzatok (
Id int PRIMARY KEY
,Ertek float
)
CREATE TABLE #FHhozTartozoTanulok (
TanuloId int PRIMARY KEY
,Evfolyam int
,Neme int
,TanuloNev nvarchar(255)
,OktatasiAzonosito nvarchar(11) COLLATE DATABASE_DEFAULT
,TanuloOsztalyNev nvarchar(255)
,TanuloOsztalyId int
)
CREATE TABLE #TanuloAtlagok (
TanuloId int PRIMARY KEY
,AktualisAtlag float
,KorabbiAtlag float
)
CREATE TABLE #KozepesAlattiTanulok (
TanuloId int PRIMARY KEY
)
CREATE TABLE #RontottTanulok (
TanuloId int PRIMARY KEY
)
CREATE TABLE #MuvCsoportTip (
CsoptipId int PRIMARY KEY
)
CREATE TABLE #EslTantargyak(
TantargyId int PRIMARY KEY
,TanevId int
)
-- Mi a "Közepes" értéke az adott feladatellátási helyen
DECLARE @FelHelyTipusKozepes float = 3.0
DECLARE @ErtekelesTipus int = IIF(@isFelevi = 0,1520,1519)
DECLARE @ExErtekelesTipus int = IIF(@ErtekelesTipus = 1520,1519,1520)
SELECT
@FelHelyTipusKozepes = IIF(fh.C_OKTATASINEVELESIFELADATTIPUS IN (1160, 1161, 1162, 5435, 1176, 6463),2.5,3.0)
FROM T_FELADATELLATASIHELY fh
WHERE fh.ID = @feladatEllatasiHelyId AND fh.TOROLT='F'
INSERT INTO #MuvCsoportTip (CsoptipID)
VALUES (1071),(1070),(1069),(1068),(1067),(6756),(6757),(6758),(6759),(6760),(6761) --művészeti csoporttípusok
-- Az elõzõ tanév ID-ja
DECLARE @ElozoTanevId int = 0
IF @IsFelevi = 0
BEGIN
SET @ElozoTanevId = @tanevId
END
ELSE
BEGIN
SELECT @ElozoTanevId = ISNULL(elozotanev.ID,0)
FROM T_TANEV akttanev
INNER JOIN T_TANEV_OSSZES elozotanev ON elozotanev.TOROLT = 'F' AND elozotanev.C_SORSZAM = akttanev.C_SORSZAM-2
AND elozotanev.C_INTEZMENYID = akttanev.C_INTEZMENYID
WHERE akttanev.ID = @tanevId
END
DECLARE @BesorolasiDatum DATE = (SELECT TOP 1 C_DATUM from T_TANEVRENDJE tr WHERE C_NAPTIPUSA = IIF(@isFelevi = 0,1395,1400) AND C_TANEVID = @tanevid AND TOROLT='F')
INSERT INTO #Osztalyzatok
SELECT
ID
,CONVERT(float,C_VALUE)
FROM T_DICTIONARYITEMBASE
WHERE C_TYPE = 'OsztalyzatTipus' AND C_TANEVID = @tanevId AND TOROLT='F'
INSERT INTO #EslTantargyak (
TantargyId
,TanevId
)
SELECT
tgy.ID
,@tanevId
FROM T_TANTARGY tgy
WHERE (tgy.C_ALTANTARGYKENTNYOMTATVANYBAN='T' OR tgy.C_FOTARGYE='T')
AND tgy.C_TANEVID = @tanevId AND tgy.TOROLT='F'
AND tgy.C_ESLTANTARGYKATEGORIAID IS NOT NULL
UNION
SELECT
tgy.ID
,@ElozoTanevId
FROM T_TANTARGY_OSSZES tgy
WHERE (tgy.C_ALTANTARGYKENTNYOMTATVANYBAN='T' OR tgy.C_FOTARGYE='T')
AND tgy.C_TANEVID = @ElozoTanevId AND tgy.TOROLT='F'
AND tgy.C_ESLTANTARGYKATEGORIAID IS NOT NULL
-- Egy adott FH-hoz tartozó tanulók kilistázása (évfolyamonként, nemenként) összevont osztályokkal együtt
INSERT INTO #FHhozTartozoTanulok/*TODO:Tobb Osztaly*//*OM-1582*/
SELECT DISTINCT
tcs.C_TANULOID
,ISNULL(tta.C_TANULOEVFOLYAMTIPUSID,1307)
,f.C_NEME
,f.C_NYOMTATASINEV
,f.C_OKTATASIAZONOSITO
,ocs.C_NEV
,ocs.ID
FROM T_OSZTALYCSOPORT ocs
INNER JOIN T_OSZTALY o ON o.ID = ocs.ID AND o.TOROLT='F'
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = o.ID AND tcs.TOROLT = 'F'
AND @BesorolasiDatum BETWEEN tcs.C_BELEPESDATUM AND ISNULL(tcs.C_KILEPESDATUM,'22000101')
INNER JOIN T_TANULOTANUGYIADATOK tta ON tta.C_TANULOCSOPORTID = tcs.ID AND tta.TOROLT = 'F' /*Ha a tanuló összevont évfolyamú osztályba jár, de van megadva neki egyénileg évfolyam a tanügyi adataiban,*/
INNER JOIN T_FELHASZNALO f ON f.ID = tcs.C_TANULOID AND f.TOROLT='F' /*akkor azt kell megjeleníteni*/
WHERE ocs.C_FELADATELLATASIHELYID = @feladatEllatasiHelyId
AND ocs.C_TANEVID = @tanevId AND ocs.C_KEPZESIFORMA = 1096
AND C_EVFOLYAMTIPUSA IN (7366,6909,6912,6913,6908,6910,6911)
AND ocs.TOROLT = 'F'
UNION
SELECT DISTINCT
tcs.C_TANULOID
,ocs.C_EVFOLYAMTIPUSA
,f.C_NEME
,f.C_NYOMTATASINEV
,f.C_OKTATASIAZONOSITO
,ocs.C_NEV
,ocs.ID
FROM T_OSZTALYCSOPORT ocs
INNER JOIN T_TANULOCSOPORT tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.TOROLT = 'F'
AND @BesorolasiDatum BETWEEN tcs.C_BELEPESDATUM AND ISNULL(tcs.C_KILEPESDATUM,'22000101')
INNER JOIN T_OSZTALY o ON o.id = tcs.C_OSZTALYCSOPORTID AND o.TOROLT='F'
INNER JOIN T_FELHASZNALO f ON f.id = tcs.C_TANULOID AND f.TOROLT='F'
WHERE ocs.C_FELADATELLATASIHELYID = @feladatEllatasiHelyId
AND ocs.C_TANEVID = @tanevId AND ocs.C_KEPZESIFORMA = 1096
AND C_EVFOLYAMTIPUSA NOT IN (7366,6909,6912,6913,6908,6910,6911)
AND ocs.TOROLT = 'F'
-- Visszatérési tábla számítása
INSERT INTO #KozepesAlattiTanulok (TanuloId)
SELECT DISTINCT
fht.TanuloId
FROM T_TANULOERTEKELES te
INNER JOIN #EslTantargyak tgy ON tgy.TanevId = te.C_TANEVID AND tgy.TantargyId = te.C_TANTARGYID
INNER JOIN #Osztalyzatok o ON o.ID = te.C_ERTEKELESOSZTALYZATID
INNER JOIN #FHhozTartozoTanulok fht ON fht.TanuloId = te.C_TANULOID
LEFT JOIN T_CSOPORT cs ON cs.ID=te.C_OSZTALYCSOPORTID AND cs.TOROLT='F'
WHERE te.C_TIPUSID = @ErtekelesTipus AND ISNULL(cs.C_TIPUSA,0) NOT IN(SELECT CsoptipID FROM #MuvCsoportTip) --alapf. műv okt csoportok osztályzatai nem kellenek
AND te.TOROLT='F' AND te.C_TANEVID = @tanevId
GROUP BY fht.TanuloId
HAVING ROUND(AVG(o.Ertek),2) < @FelHelyTipusKozepes
INSERT INTO #TanuloAtlagok (
TanuloId
,AktualisAtlag
,KorabbiAtlag
)
SELECT
fht.TanuloId
,(
SELECT
ROUND(AVG(o.Ertek),2)
FROM T_TANULOERTEKELES te
INNER JOIN #Osztalyzatok o ON o.ID = te.C_ERTEKELESOSZTALYZATID
INNER JOIN #EslTantargyak tgy ON tgy.Tantargyid = te.C_TANTARGYID AND tgy.TanevId = te.C_TANEVID
WHERE te.C_TANULOID = tanulo.ID AND te.C_TIPUSID = @ErtekelesTipus AND te.TOROLT='F' AND te.C_TANEVID = tanulo.C_TANEVID
AND NOT EXISTS(SELECT 1 FROM T_CSOPORT WHERE ID = te.C_OSZTALYCSOPORTID AND C_TIPUSA IN (SELECT CsoptipID FROM #MuvCsoportTip))
) AktualisAtlag
,(
SELECT
ROUND(AVG(o.Ertek),2)
FROM T_TANULOERTEKELES_OSSZES te
INNER JOIN #Osztalyzatok o ON o.ID = te.C_ERTEKELESOSZTALYZATID
INNER JOIN #EslTantargyak tgy ON tgy.Tantargyid = te.C_TANTARGYID AND tgy.TanevId = te.C_TANEVID
WHERE te.C_TANULOID = extanulo.ID AND te.C_TIPUSID = @ExErtekelesTipus AND te.TOROLT = 'F' AND te.C_TANEVID = extanulo.C_TANEVID
AND NOT EXISTS(SELECT 1 FROM T_CSOPORT_OSSZES WHERE ID = te.C_OSZTALYCSOPORTID AND C_TIPUSA IN (SELECT CsoptipID FROM #MuvCsoportTip) AND TOROLT='F')
) KorabbiAtlag
FROM #FHhozTartozoTanulok fht
INNER JOIN T_FELHASZNALO tanulo ON tanulo.ID = fht.TanuloId
INNER JOIN T_FELHASZNALO_OSSZES extanulo ON tanulo.C_OKTATASIAZONOSITO = extanulo.C_OKTATASIAZONOSITO
AND extanulo.C_TANEVID = @ElozoTanevId AND extanulo.TOROLT = 'F'
INSERT INTO #RontottTanulok (TanuloId)
SELECT DISTINCT
fht.TanuloId
FROM #FHhozTartozoTanulok fht
INNER JOIN #TanuloAtlagok ta ON ta.TanuloId = fht.TanuloId
WHERE (ta.AktualisAtlag+1.1) <= ta.KorabbiAtlag
SELECT
fht.TanuloId
,fht.Evfolyam
,fht.Neme
,fht.TanuloNev
,fht.OktatasiAzonosito
,fht.TanuloOsztalyNev
,fht.TanuloOsztalyId
,IIF(kozepes.TanuloId IS NULL, 0, 1)
,IIF(rontott.TanuloId IS NULL, 0, 1)
FROM #FHhozTartozoTanulok fht
LEFT JOIN #KozepesAlattiTanulok kozepes ON kozepes.TanuloId = fht.TanuloId
LEFT JOIN #RontottTanulok rontott ON rontott.TanuloId = fht.TanuloId
WHERE (kozepes.TanuloId IS NOT NULL OR rontott.TanuloId IS NOT NULL)
END
GO