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,230 @@
DROP PROCEDURE IF EXISTS [dbo].[sp_GetHaladasiNaploAdatok]
GO
CREATE PROCEDURE [dbo].[sp_GetHaladasiNaploAdatok]
@tanevID int,
@osztalyID int = null,
@tanarID int = null
AS
BEGIN
DECLARE @cTantargyId INT = 0
DECLARE @cOsztalyCsoportId INT = 0
DECLARE @cTanarId INT = 0
DECLARE @foglalkozasNev VARCHAR(255)
SET NOCOUNT ON;
SELECT DISTINCT
ocs.C_NEV + ' - ' + tt.C_NEV AS Nev
,tn.C_TANTARGYID
,tn.C_OSZTALYCSOPORTID
,tn.C_INTEZMENYID
,tn.C_TANARID AS C_TANARID
,IIF(f.ID IS NULL,'F','T') AS VanTTF
INTO #Foglalkozasok
FROM T_TANITASIORA_OSSZES tn
LEFT JOIN T_FOGLALKOZAS_OSSZES f ON f.C_TANTARGYID = tn.C_TANTARGYID AND f.C_OSZTALYCSOPORTID = tn.C_OSZTALYCSOPORTID AND f.C_TANARID = tn.C_TANARID AND f.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT_OSSZES OCS on OCS.ID = tn.C_OSZTALYCSOPORTID and OCS.TOROLT = 'F' AND OCS.C_FELADATKATEGORIAID = 7553 /*OktNevelesiKategoriaEnum.Alapkepzes*/
LEFT JOIN T_CSOPORTOK_OSZTALYOK cso on cso.C_CSOPORTOKID = ocs.ID
INNER JOIN T_TANTARGY_OSSZES tt on tt.ID = tn.C_TANTARGYID and tt.TOROLT = 'F'
WHERE tn.TOROLT = 'F'
AND tn.C_TANEVID = @tanevID
AND (
((@osztalyID IS NOT NULL) AND (ocs.ID = @osztalyID OR cso.C_OSZTALYOKID = @osztalyID))
OR
((@tanarID IS NOT NULL) AND tn.C_TANARID = @tanarID)
)
ORDER BY VanTTF DESC, Nev ASC
SELECT
IIF(fog.VanTTF = 'F','Egyedi-','')+Nev+' - '+felh.C_NYOMTATASINEV Nev,
fog.VanTTF
FROM #Foglalkozasok fog
INNER JOIN T_FELHASZNALO_OSSZES felh on fog.C_TANARID=felh.ID
ORDER BY fog.VanTTF DESC, Nev ASC
DECLARE @sorszamTable TABLE (
tanitasiOraId int-- PRIMARY KEY
,evesOraszam int
,foglalkozasId int
)
INSERT INTO @sorszamTable (tanitasiOraId, evesOraszam)
SELECT s.Id, s.EvesSorszam FROM #Foglalkozasok f
CROSS APPLY dbo.fnGetEvesOraszamLista(
f.C_TANTARGYID
,f.C_OSZTALYCSOPORTID
,f.C_TANARID
,GETDATE()
,f.C_INTEZMENYID
,@tanevID
) s
DECLARE foglalkozasCursor CURSOR FOR
SELECT C_TANTARGYID, C_OSZTALYCSOPORTID, C_TANARID FROM #Foglalkozasok ORDER BY VanTTF DESC, Nev ASC
OPEN foglalkozasCursor
FETCH NEXT FROM foglalkozasCursor into @cTantargyId, @cOsztalyCsoportId, @cTanarId
WHILE @@FETCH_STATUS = 0 BEGIN
SELECT DISTINCT
CASE
WHEN tn.C_MEGTARTOTT = 'T' THEN s.evesOraszam -- tn.C_ORAEVESSORSZAM
ELSE '-'
END AS OraSorszam
,fh.C_NYOMTATASINEV TanarNev
,fh.C_OKTATASIAZONOSITO TanarOktAzon
,tn.C_TEMA Tema
,CASE
WHEN tn.C_HELYETTESITOTANARID IS NULL THEN ''
ELSE 'H'
END AS Helyettesites
,FORMAT(tn.C_DATUM, 'yyyy.MM.dd.') Datum
,tn.C_ORASZAM OraSzam
,tn.C_MEGJEGYZES Megjegyzes
,ISNULL(tn.C_HAZIFELADAT,hf.C_FELADATSZOVEGE) HaziFeladat
,tn.C_TULORA TulOra
,tn.C_TAMOPORA TamopOra
,tn.C_NEMSZAKRENDSZERUORA NemszakrendszeruOra
,tn.C_IKTTANORA IktOra
,tn.C_NEMZETISEGIORA NemzetisegiOra
,tn.C_MINDENNAPOSTESTNEVELES TestnevelesOra
,tn.C_IPRTANORA IprOra
,tn.C_DIFFERENCIALT DifferencialtOra
,tn.C_KOOPERATIV KooperativOra
,tn.C_MERES MeresOra
,tn.C_DRAMA DramaOra
,tn.C_PARHUZAMOSORA ParhuzamosOra
,tn.C_TIOP12 TiopOra
,tn.C_KIPORA KIPOra
,tn.C_VEKOP73317 VEKOP73317
,tn.C_KAPORA KAPOra
,tn.C_BONTOTT Bontott
,tn.C_MULTIKULTURALISORA Multikulturalis
,tn.C_EFOP32317 EFOP32317
,tn.C_KOMPLEXORA Komplexora
,tn.C_GINOP623 GINOP623
,tn.C_EFOP31716 EFOP31716
,tn.C_EFOP33717 EFOP33717
,tn.C_TIOP1111212012001 TIOP1111212012001
FROM T_TANITASIORA_OSSZES tn
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = tn.C_TANARID
LEFT JOIN @sorszamTable s ON s.tanitasiOraId = tn.ID
LEFT JOIN T_HAZIFELADATOK hf ON hf.C_TANITASIORAID = tn.ID
WHERE tn.TOROLT = 'F'
AND tn.C_TANEVID = @tanevID
AND tn.C_TANARID = @cTanarId
AND tn.C_TANTARGYID = @cTantargyId
AND tn.C_OSZTALYCSOPORTID = @cOsztalyCsoportId
ORDER BY FORMAT(tn.C_DATUM, 'yyyy.MM.dd.')
FETCH NEXT FROM foglalkozasCursor
INTO @cTantargyId, @cOsztalyCsoportId, @cTanarId
END
CLOSE foglalkozasCursor
DEALLOCATE foglalkozasCursor
IF (SELECT COUNT(Nev) FROM #Foglalkozasok) = 0 BEGIN
DECLARE @nincsAdat TABLE (
OraSorszam int,
TanarNev nvarchar(1),
TanarOktAzon nvarchar(1),
Tema nvarchar(1),
Helyettesites int,
Datum datetime,
OraSzam int,
Megjegyzes nvarchar(1),
HaziFeladat nvarchar(1),
TulOra char,
TamopOra char,
NemszakrendszeruOra char,
IktOra char,
NemzetisegiOra char,
TestnevelesOra char,
IprOra char,
DifferencialtOra char,
KooperativOra char,
MeresOra char,
DramaOra char,
ParhuzamosOra char,
TiopOra char,
KIPOra char,
VEKOP73317 char,
KAPOra char
,Bontott char
,Multikulturalis char
,EFOP32317 char
,Komplexora char
,GINOP623 char
,EFOP31716 char
,EFOP33717 char
,TIOP1111212012001 char
)
SELECT * FROM @nincsAdat;
END
-- Iktatás adatok
IF @tanarID IS NOT NULL BEGIN
SELECT f.ID AS PedagogusId
,f.C_OKTATASIAZONOSITO AS PedagogusOktAzon
,mua.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
FROM T_FELHASZNALO_OSSZES AS f
LEFT JOIN T_MUNKAUGYIADATOK_OSSZES AS mua ON mua.C_ALKALMAZOTTID = f.ID
WHERE f.ID = @tanarID
AND f.C_TANEVID = @tanevID
END
IF @osztalyID IS NOT NULL BEGIN
DECLARE @isCsoport INT = (SELECT COUNT(ID) FROM T_CSOPORT_OSSZES WHERE ID = @osztalyID)
IF @isCsoport = 0 BEGIN
SELECT
ocs.ID AS OsztalyId
,o.C_OSZTALYFONOKID AS OsztalyfonokId
,ocs.C_EVFOLYAMTIPUSA EvfolyamTipusa
,ocs.C_FELADATELLATASIHELYID FeladatEllatasiHelyId
,o.C_TANTERVID TantervId
,o.C_KEPZESIFORMA KepzesiForma
,o.C_AGAZAT Agazat
,o.C_SZAKMACSOPORT SzakmaCsoport
,o.C_SZAKKEPESITES Szakkepesites
,o.C_RESZSZAKKEPESITES Reszszakkepesites
,ocs.C_KERESZTFELEVES OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM CSJVegzosEvfolyamu
,o.C_TECHNIKAIOSZTALY OJTechnikaiOsztaly
,o.C_NEMZETISEGI OJNemzetisegi
,o.C_KETTANNYELVU OJKettannyelvu
,o.C_NYELVIELOKESZITO OJNyelviElokeszito
,o.C_LOGOPEDIAI OJLogopediai
,o.C_SPORT OJSportOsztaly
,o.C_AJPROGRAM OJAranyJanosProgram
,o.C_GYOGYPEDAGOGIAI OJGyogypedagogiai
FROM T_OSZTALYCSOPORT_OSSZES AS ocs
INNER JOIN T_OSZTALY_OSSZES AS o ON ocs.id = o.ID
WHERE ocs.TOROLT='F'
AND ocs.ID = @osztalyId
AND ocs.C_TANEVID = @tanevId
END
ELSE BEGIN
SELECT
ocs.ID AS CsoportId
,cs.C_CSOPORTVEZETOID AS CsoportvezetoId
,cs.C_TIPUSA AS CsoportTipusa
,ISNULL(ocs.C_EVFOLYAMTIPUSA, 1296) AS EvfolyamTipusa -- 1296 = Na
,ocs.C_FELADATELLATASIHELYID FeladatEllatasiHelyId
,ocs.C_KERESZTFELEVES OJCSJKeresztfeleves
,ocs.C_VEGZOSEVFOLYAM CSJVegzosEvfolyamu
FROM T_OSZTALYCSOPORT_OSSZES AS ocs
INNER JOIN T_CSOPORT_OSSZES AS cs ON cs.ID = ocs.ID
WHERE ocs.TOROLT = 'F'
AND ocs.ID = @osztalyID
AND ocs.C_TANEVID = @tanevID
END
SELECT DISTINCT
felh.ID AS TanarId
,felh.C_OKTATASIAZONOSITO AS TanarOktAzon
FROM #Foglalkozasok AS fogl
INNER JOIN T_FELHASZNALO_OSSZES felh ON felh.ID = fogl.C_TANARID
END
DROP TABLE #Foglalkozasok
END
GO

View File

@@ -0,0 +1,394 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetOsztalyTanuloinakHaviMulasztasaiOsszesitoje_honapra]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetOsztalyTanuloinakHaviMulasztasaiOsszesitoje_honapra]
END
GO
CREATE PROCEDURE [dbo].[sp_GetOsztalyTanuloinakHaviMulasztasaiOsszesitoje_honapra]
@pTanevId INT,
@pIntezmenyId INT,
@pOsztalyId INT,
@pHonap INT,
@pElmeletgyakorlat BIT = 0,
@pMulasztandoOrakszamaTeljesNaposMulasztashoz INT = 3
AS
BEGIN
DECLARE @idoszakEleje DATE = (SELECT TOP 1 C_ELSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @pTanevId);
DECLARE @iskolaErdekuParam INT = 1683;
DECLARE @iskolaErdekuSzamit BIT = dbo.fnGetRendszerbeallitasEnumBool(@iskolaErdekuParam, @pIntezmenyId, @pTanevId);
DECLARE @pAtsoroltTanuloAdatok INT = 1;
DECLARE @pMulasztasTipusIdKeses INT = 1499;
DECLARE @pMulasztasTipusIdHianyzas INT = 1500;
--Osztály tanulói
CREATE TABLE #tanulo (Id INT)
INSERT INTO #tanulo
SELECT DISTINCT tcs.c_tanuloid AS Id
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_FELHASZNALO_OSSZES f ON f.id = tcs.c_tanuloid
WHERE tcs.torolt='F' AND f.torolt='F' AND tcs.c_tanevid=@pTanevId AND tcs.c_intezmenyid=@pIntezmenyId AND tcs.c_osztalycsoportid=@pOsztalyId;
--Igazolástípusok
CREATE TABLE #igazolastipus (Id INT, Nev NVARCHAR(MAX), Sorrend INT);
INSERT INTO #igazolastipus
SELECT T_IGAZOLASTIPUS_OSSZES.ID AS Id, C_NAME AS Nev, C_ORDER AS Sorrrend
FROM T_IGAZOLASTIPUS_OSSZES
INNER JOIN T_DICTIONARYITEMBASE_OSSZES ON T_IGAZOLASTIPUS_OSSZES.ID = T_DICTIONARYITEMBASE_OSSZES.ID
WHERE T_DICTIONARYITEMBASE_OSSZES.C_INTEZMENYID = @pIntezmenyId AND T_DICTIONARYITEMBASE_OSSZES.C_TANEVID = @pTanevId AND T_IGAZOLASTIPUS_OSSZES.C_ALINTEZMENYID = @pIntezmenyId AND T_IGAZOLASTIPUS_OSSZES.C_ALTANEVID = @pTanevId
AND T_IGAZOLASTIPUS_OSSZES.TOROLT = 'F' AND T_DICTIONARYITEMBASE_OSSZES.TOROLT = 'F'
ORDER BY C_ORDER, C_NAME;
--Igazolások és típusai
CREATE TABLE #igazolas (Tanulo INT, IgazoltE NVARCHAR(1), IgazolasTipus INT, Gyakorlati CHAR(1), HianyzasErtek FLOAT, KesettPerc FLOAT)
INSERT INTO #igazolas
SELECT TanuloId AS Tanulo, Igazolt AS IgazoltE, IgazolasTipusa AS IgazolasTipus, IIF(@pElmeletgyakorlat=0, 'F', Gyakorlati) AS Gyakorlati,
SUM(CAST(IIF(Tipusa = @pMulasztasTipusIdHianyzas, 1, IIF(Tipusa = @pMulasztasTipusIdKeses,CAST(KesesPercben AS FLOAT) / 45, 0)) AS FLOAT)) AS HianyzasErtek, KesesPercben AS KesettPerc
FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @iskolaErdekuSzamit, 0, IIF(@pAtsoroltTanuloAdatok > 0, 1, 0), @idoszakEleje, GETDATE(), DEFAULT) AS MULASZTASOK
WHERE (CAST(MONTH(Datum) AS VARCHAR)) = @pHonap AND Tipusa IN (@pMulasztasTipusIdKeses, @pMulasztasTipusIdHianyzas)
GROUP BY IIF(@pElmeletgyakorlat=0, 'F', Gyakorlati), TanuloId, Igazolt, IgazolasTipusa, KesesPercben;
--Mulasztások
CREATE TABLE #mulasztas (Nap NVARCHAR(5), Tanulo INT, Osztaly INT, HianyzasErtek FLOAT)
INSERT INTO #mulasztas
SELECT CAST(CAST(DAY(Datum) AS INT) AS NVARCHAR) + (IIF(@pElmeletgyakorlat=0, '', IIF(Gyakorlati = 'T', '_GY', '_E'))) AS Nap, TanuloId AS Tanulo, OsztalyCsoportId AS Osztaly,
SUM(CAST(IIF(Tipusa = @pMulasztasTipusIdHianyzas, 1, IIF(Tipusa = @pMulasztasTipusIdKeses, CAST(KesesPercben AS FLOAT) / 45, 0)) AS FLOAT)) AS HianyzasErtek
FROM fnGetDokumentumMulasztasokOsztalyonkentReszletes (@pTanevId, @pOsztalyId, @iskolaErdekuSzamit, 0, IIF(@pAtsoroltTanuloAdatok > 0, 1, 0), @idoszakEleje, GETDATE(), DEFAULT) AS MULASZTASOK
WHERE (CAST(MONTH(Datum) AS VARCHAR)) = @pHonap AND Tipusa IN (@pMulasztasTipusIdKeses, @pMulasztasTipusIdHianyzas)
GROUP BY CAST(DAY(Datum) AS INT), Gyakorlati, TanuloId, OsztalyCsoportId;
--Teljes napos mulasztások száma
CREATE TABLE #teljesnaposmul (Tanulo INT, HianyzasErtek INT)
INSERT INTO #teljesnaposmul
SELECT Tanulo, SUM(TeljesNapiMul) AS HianyzasErtek
FROM (
SELECT Tanulo, Nap, IIF(SUM(HianyzasErtek) >= @pMulasztandoOrakszamaTeljesNaposMulasztashoz, 1, 0) AS TeljesNapiMul
FROM #mulasztas
GROUP BY Tanulo, Nap
) AS TeljesNapiMulasztasok
GROUP BY Tanulo
DECLARE @query AS NVARCHAR(MAX);
IF @pElmeletgyakorlat=0
BEGIN
DECLARE @colsHeader AS NVARCHAR(MAX);
DECLARE @cols AS NVARCHAR(MAX);
DECLARE @colsSum AS NVARCHAR(MAX);
SELECT @colsHeader = ISNULL(@colsHeader + ', ', '') + QUOTENAME(Id) + ' AS ' + QUOTENAME(Nev),
@cols = ISNULL(@cols + ', ', '') + QUOTENAME(Id),
@colsSum = ISNULL(@colsSum + ', ', '') + 'SUM( [' + CAST(Id as nvarchar(max)) + '] ) AS ' + QUOTENAME(Id)
FROM #igazolastipus AS Igazolastipus
ORDER BY Sorrend, Nev;
PRINT @cols;
PRINT @colsSum;
PRINT @colsHeader;
SET @query =
'SELECT
f.c_nyomtatasinev AS COLUMN108,
f.C_OKTATASIAZONOSITO AS COLUMN109,
IIF(m.[1]=0, NULL, FLOOR(m.[1])) AS [1],
IIF(m.[2]=0, NULL, FLOOR(m.[2])) AS [2],
IIF(m.[3]=0, NULL, FLOOR(m.[3])) AS [3],
IIF(m.[4]=0, NULL, FLOOR(m.[4])) AS [4],
IIF(m.[5]=0, NULL, FLOOR(m.[5])) AS [5],
IIF(m.[6]=0, NULL, FLOOR(m.[6])) AS [6],
IIF(m.[7]=0, NULL, FLOOR(m.[7])) AS [7],
IIF(m.[8]=0, NULL, FLOOR(m.[8])) AS [8],
IIF(m.[9]=0, NULL, FLOOR(m.[9])) AS [9],
IIF(m.[10]=0, NULL, FLOOR(m.[10])) AS [10],
IIF(m.[11]=0, NULL, FLOOR(m.[11])) AS [11],
IIF(m.[12]=0, NULL, FLOOR(m.[12])) AS [12],
IIF(m.[13]=0, NULL, FLOOR(m.[13])) AS [13],
IIF(m.[14]=0, NULL, FLOOR(m.[14])) AS [14],
IIF(m.[15]=0, NULL, FLOOR(m.[15])) AS [15],
IIF(m.[16]=0, NULL, FLOOR(m.[16])) AS [16],
IIF(m.[17]=0, NULL, FLOOR(m.[17])) AS [17],
IIF(m.[18]=0, NULL, FLOOR(m.[18])) AS [18],
IIF(m.[19]=0, NULL, FLOOR(m.[19])) AS [19],
IIF(m.[20]=0, NULL, FLOOR(m.[20])) AS [20],
IIF(m.[21]=0, NULL, FLOOR(m.[21])) AS [21],
IIF(m.[22]=0, NULL, FLOOR(m.[22])) AS [22],
IIF(m.[23]=0, NULL, FLOOR(m.[23])) AS [23],
IIF(m.[24]=0, NULL, FLOOR(m.[24])) AS [24],
IIF(m.[25]=0, NULL, FLOOR(m.[25])) AS [25],
IIF(m.[26]=0, NULL, FLOOR(m.[26])) AS [26],
IIF(m.[27]=0, NULL, FLOOR(m.[27])) AS [27],
IIF(m.[28]=0, NULL, FLOOR(m.[28])) AS [28],
IIF(m.[29]=0, NULL, FLOOR(m.[29])) AS [29],
IIF(m.[30]=0, NULL, FLOOR(m.[30])) AS [30],
IIF(m.[31]=0, NULL, FLOOR(m.[31])) AS [31],
FLOOR(OSSZES.MULASZTASOKSZAMA) AS COLUMN2672,
FLOOR(IGAZOLT.IGAZOLTSZAMA) AS COLUMN2568, ' + @colsHeader + ',
FLOOR(IGAZOLATLAN.IGAZOLATLANSZAMA) AS COLUMN1911,
TELJESNAPOSMULASZTAS.HianyzasErtek AS COLUMNTELJESNAPOSMULASZTASOK,
IGAZOLTKESES.IGAZOLTPERC AS COLUMNIGAZOLTKESESPERCBEN,
IGAZOLATLANKESES.IGAZOLATLANPERC AS COLUMNIGAZOLATLANKESESPERCBEN
FROM #tanulo AS tanulok
LEFT JOIN (
SELECT Tanulo, ' + @colsSum + '
FROM #igazolas AS igazolasok
PIVOT (SUM(HianyzasErtek) FOR IgazolasTipus IN (' + @cols + ')) AS PIVOTTABLE
GROUP BY Tanulo
) AS IGAZOLASTIPUSOKSZERINT ON IGAZOLASTIPUSOKSZERINT.Tanulo = tanulok.Id
LEFT JOIN (
SELECT Tanulo, HianyzasErtek
FROM #teljesnaposmul AS teljesnaposmul
) AS TELJESNAPOSMULASZTAS ON TELJESNAPOSMULASZTAS.Tanulo = tanulok.Id
LEFT JOIN (
SELECT Tanulo,
SUM([1]) AS [1],
SUM([2]) AS [2],
SUM([3]) AS [3],
SUM([4]) AS [4],
SUM([5]) AS [5],
SUM([6]) AS [6],
SUM([7]) AS [7],
SUM([8]) AS [8],
SUM([9]) AS [9],
SUM([10]) AS [10],
SUM([11]) AS [11],
SUM([12]) AS [12],
SUM([13]) AS [13],
SUM([14]) AS [14],
SUM([15]) AS [15],
SUM([16]) AS [16],
SUM([17]) AS [17],
SUM([18]) AS [18],
SUM([19]) AS [19],
SUM([20]) AS [20],
SUM([21]) AS [21],
SUM([22]) AS [22],
SUM([23]) AS [23],
SUM([24]) AS [24],
SUM([25]) AS [25],
SUM([26]) AS [26],
SUM([27]) AS [27],
SUM([28]) AS [28],
SUM([29]) AS [29],
SUM([30]) AS [30],
SUM([31]) AS [31]
FROM #mulasztas AS mulasztas
PIVOT (SUM(mulasztas.HianyzasErtek) for Nap in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15], [16], [17], [18], [19], [20], [21], [22], [23], [24], [25], [26], [27], [28], [29], [30], [31])) pv
GROUP BY Tanulo
) m ON m.Tanulo = tanulok.id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS MULASZTASOKSZAMA FROM #igazolas GROUP BY Tanulo) AS OSSZES ON OSSZES.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS IGAZOLTSZAMA FROM #igazolas i WHERE i.IgazoltE=''T'' GROUP BY Tanulo) AS IGAZOLT ON IGAZOLT.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS IGAZOLATLANSZAMA FROM #igazolas i WHERE i.IgazoltE=''F'' GROUP BY Tanulo) AS IGAZOLATLAN ON IGAZOLATLAN.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(KesettPerc) AS IGAZOLTPERC FROM #igazolas i WHERE i.IgazoltE=''T'' GROUP BY Tanulo) AS IGAZOLTKESES ON IGAZOLTKESES.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(KesettPerc) AS IGAZOLATLANPERC FROM #igazolas i WHERE (i.IgazoltE=''F'' OR i.IgazoltE IS NULL) GROUP BY Tanulo) AS IGAZOLATLANKESES ON IGAZOLATLANKESES.Tanulo = tanulok.Id
INNER JOIN T_FELHASZNALO_OSSZES f ON f.id = tanulok.Id
--GROUP BY f.c_nyomtatasinev, tanulok.Id, f.id
ORDER BY f.c_nyomtatasinev';
exec sp_executesql @query;
END
ELSE
BEGIN
DECLARE @colsHeader_E AS NVARCHAR(MAX);
DECLARE @colsHeader_GY AS NVARCHAR(MAX);
DECLARE @cols_E AS NVARCHAR(MAX);
DECLARE @cols_GY AS NVARCHAR(MAX);
DECLARE @colsSum_E AS NVARCHAR(MAX);
DECLARE @colsSum_GY AS NVARCHAR(MAX);
SELECT @colsHeader_E = ISNULL(@colsHeader_E + ', ', '') + QUOTENAME(Id) + ' AS ' + QUOTENAME(Nev + ' (elméleti)'),
@colsHeader_GY = ISNULL(@colsHeader_GY + ', ', '') + QUOTENAME(-Id) + ' AS ' + QUOTENAME(Nev + ' (gyakorlati)'),
@cols_E = ISNULL(@cols_E + ', ', '') + QUOTENAME(Id),
@cols_GY = ISNULL(@cols_GY + ', ', '') + QUOTENAME(-Id),
@colsSum_E = ISNULL(@colsSum_E + ', ', '') + 'SUM( [' + CAST(Id as nvarchar(max)) + '] ) AS ' + QUOTENAME(Id),
@colsSum_GY = ISNULL(@colsSum_GY + ', ', '') + 'SUM( [' + CAST(-Id as nvarchar(max)) + '] ) AS ' + QUOTENAME(-Id)
FROM #igazolastipus AS Igazolastipus
ORDER BY Sorrend, Nev;
SET @query =
'SELECT f.c_nyomtatasinev AS COLUMN108,
f.C_OKTATASIAZONOSITO AS COLUMN109,
IIF(m.[1_E]=0, NULL, FLOOR(m.[1_E])) AS [1 E],
IIF(m.[1_GY]=0, NULL, FLOOR(m.[1_GY])) AS [1 GY],
IIF(m.[2_E]=0, NULL, FLOOR(m.[2_E])) AS [2 E],
IIF(m.[2_GY]=0, NULL, FLOOR(m.[2_GY])) AS [2 GY],
IIF(m.[3_E]=0, NULL, FLOOR(m.[3_E])) AS [3 E],
IIF(m.[3_GY]=0, NULL, FLOOR(m.[3_GY])) AS [3 GY],
IIF(m.[4_E]=0, NULL, FLOOR(m.[4_E])) AS [4 E],
IIF(m.[4_GY]=0, NULL, FLOOR(m.[4_GY])) AS [4 GY],
IIF(m.[5_E]=0, NULL, FLOOR(m.[5_E])) AS [5 E],
IIF(m.[5_GY]=0, NULL, FLOOR(m.[5_GY])) AS [5 GY],
IIF(m.[6_E]=0, NULL, FLOOR(m.[6_E])) AS [6 E],
IIF(m.[6_GY]=0, NULL, FLOOR(m.[6_GY])) AS [6 GY],
IIF(m.[7_E]=0, NULL, FLOOR(m.[7_E])) AS [7 E],
IIF(m.[7_GY]=0, NULL, FLOOR(m.[7_GY])) AS [7 GY],
IIF(m.[8_E]=0, NULL, FLOOR(m.[8_E])) AS [8 E],
IIF(m.[8_GY]=0, NULL, FLOOR(m.[8_GY])) AS [8 GY],
IIF(m.[9_E]=0, NULL, FLOOR(m.[9_E])) AS [9 E],
IIF(m.[9_GY]=0, NULL, FLOOR(m.[9_GY])) AS [9 GY],
IIF(m.[10_E]=0, NULL, FLOOR(m.[10_E])) AS [10 E],
IIF(m.[10_GY]=0, NULL, FLOOR(m.[10_GY])) AS [10 GY],
IIF(m.[11_E]=0, NULL, FLOOR(m.[11_E])) AS [11 E],
IIF(m.[11_GY]=0, NULL, FLOOR(m.[11_GY])) AS [11 GY],
IIF(m.[12_E]=0, NULL, FLOOR(m.[12_E])) AS [12 E],
IIF(m.[12_GY]=0, NULL, FLOOR(m.[12_GY])) AS [12 GY],
IIF(m.[13_E]=0, NULL, FLOOR(m.[13_E])) AS [13 E],
IIF(m.[13_GY]=0, NULL, FLOOR(m.[13_GY])) AS [13 GY],
IIF(m.[14_E]=0, NULL, FLOOR(m.[14_E])) AS [14 E],
IIF(m.[14_GY]=0, NULL, FLOOR(m.[14_GY])) AS [14 GY],
IIF(m.[15_E]=0, NULL, FLOOR(m.[15_E])) AS [15 E],
IIF(m.[15_GY]=0, NULL, FLOOR(m.[15_GY])) AS [15 GY],
IIF(m.[16_E]=0, NULL, FLOOR(m.[16_E])) AS [16 E],
IIF(m.[16_GY]=0, NULL, FLOOR(m.[16_GY])) AS [16 GY],
IIF(m.[17_E]=0, NULL, FLOOR(m.[17_E])) AS [17 E],
IIF(m.[17_GY]=0, NULL, FLOOR(m.[17_GY])) AS [17 GY],
IIF(m.[18_E]=0, NULL, FLOOR(m.[18_E])) AS [18 E],
IIF(m.[18_GY]=0, NULL, FLOOR(m.[18_GY])) AS [18 GY],
IIF(m.[19_E]=0, NULL, FLOOR(m.[19_E])) AS [19 E],
IIF(m.[19_GY]=0, NULL, FLOOR(m.[19_GY])) AS [19 GY],
IIF(m.[20_E]=0, NULL, FLOOR(m.[20_E])) AS [20 E],
IIF(m.[20_GY]=0, NULL, FLOOR(m.[20_GY])) AS [20 GY],
IIF(m.[21_E]=0, NULL, FLOOR(m.[21_E])) AS [21 E],
IIF(m.[21_GY]=0, NULL, FLOOR(m.[21_GY])) AS [21 GY],
IIF(m.[22_E]=0, NULL, FLOOR(m.[22_E])) AS [22 E],
IIF(m.[22_GY]=0, NULL, FLOOR(m.[22_GY])) AS [22 GY],
IIF(m.[23_E]=0, NULL, FLOOR(m.[23_E])) AS [23 E],
IIF(m.[23_GY]=0, NULL, FLOOR(m.[23_GY])) AS [23 GY],
IIF(m.[24_E]=0, NULL, FLOOR(m.[24_E])) AS [24 E],
IIF(m.[24_GY]=0, NULL, FLOOR(m.[24_GY])) AS [24 GY],
IIF(m.[25_E]=0, NULL, FLOOR(m.[25_E])) AS [25 E],
IIF(m.[25_GY]=0, NULL, FLOOR(m.[25_GY])) AS [25 GY],
IIF(m.[26_E]=0, NULL, FLOOR(m.[26_E])) AS [26 E],
IIF(m.[26_GY]=0, NULL, FLOOR(m.[26_GY])) AS [26 GY],
IIF(m.[27_E]=0, NULL, FLOOR(m.[27_E])) AS [27 E],
IIF(m.[27_GY]=0, NULL, FLOOR(m.[27_GY])) AS [27 GY],
IIF(m.[28_E]=0, NULL, FLOOR(m.[28_E])) AS [28 E],
IIF(m.[28_GY]=0, NULL, FLOOR(m.[28_GY])) AS [28 GY],
IIF(m.[29_E]=0, NULL, FLOOR(m.[29_E])) AS [29 E],
IIF(m.[29_GY]=0, NULL, FLOOR(m.[29_GY])) AS [29 GY],
IIF(m.[30_E]=0, NULL, FLOOR(m.[30_E])) AS [30 E],
IIF(m.[30_GY]=0, NULL, FLOOR(m.[30_GY])) AS [30 GY],
IIF(m.[31_E]=0, NULL, FLOOR(m.[31_E])) AS [31 E],
FLOOR(osszes_e.MULASZTASOKSZAMA) AS COLUMN2672_E,
FLOOR(igazolt_e.IGAZOLTSZAMA) AS COLUMN2568_E,
' + @colsHeader_E + ',
FLOOR(igazolatlan_e.IGAZOLATLANSZAMA) AS COLUMN1911_E,
FLOOR(osszes_gy.MULASZTASOKSZAMA) AS COLUMN2672_GY,
FLOOR(igazolt_gy.IGAZOLTSZAMA) AS COLUMN2568_GY,
' + @colsHeader_GY + ',
FLOOR(igazolatlan_gy.IGAZOLATLANSZAMA) AS COLUMN1911_GY,
TELJESNAPOSMULASZTAS.HianyzasErtek AS COLUMNTELJESNAPOSMULASZTASOK,
igazoltkeses_e.IGAZOLTPERC AS COLUMNIGAZOLTKESESPERCBEN_E,
igazoltkeses_gy.IGAZOLTPERC AS COLUMNIGAZOLTKESESPERCBEN_GY,
igazolatlankeses_e.IGAZOLATLANPERC AS COLUMNIGAZOLATLANKESESPERCBEN_E,
igazolatlankeses_gy.IGAZOLATLANPERC AS COLUMNIGAZOLATLANKESESPERCBEN_GY
FROM #tanulo AS tanulok
LEFT JOIN (
SELECT Tanulo, ' + @colsSum_E + '
FROM (
SELECT *
FROM #igazolas AS igazolasok
WHERE Gyakorlati = ''F'' OR Gyakorlati IS NULL
) AS igazolasok
PIVOT (SUM(HianyzasErtek) FOR IgazolasTipus IN (' + @cols_E + ')) AS PIVOTTABLE_E
GROUP BY Tanulo
) AS IGAZOLASTIPUSOKSZERINT_E ON IGAZOLASTIPUSOKSZERINT_E.Tanulo = tanulok.Id
LEFT JOIN (
SELECT Tanulo, ' + @colsSum_Gy + '
FROM (
SELECT Tanulo, IgazoltE, -IgazolasTipus AS IgazolasTipus, Gyakorlati, HianyzasErtek
FROM #igazolas AS igazolasok
WHERE Gyakorlati = ''T''
) AS igazolasok
PIVOT (SUM(HianyzasErtek) FOR IgazolasTipus IN (' + @cols_GY + ')) AS PIVOTTABLE_GY
GROUP BY Tanulo
) AS IGAZOLASTIPUSOKSZERINT_GY ON IGAZOLASTIPUSOKSZERINT_GY.Tanulo = tanulok.Id
LEFT JOIN (
SELECT Tanulo, HianyzasErtek
FROM #teljesnaposmul AS teljesnaposmul
) AS TELJESNAPOSMULASZTAS ON TELJESNAPOSMULASZTAS.Tanulo = tanulok.Id
LEFT JOIN (
SELECT
Tanulo,
SUM([1_E]) AS [1_E],
SUM([2_E]) AS [2_E],
SUM([3_E]) AS [3_E],
SUM([4_E]) AS [4_E],
SUM([5_E]) AS [5_E],
SUM([6_E]) AS [6_E],
SUM([7_E]) AS [7_E],
SUM([8_E]) AS [8_E],
SUM([9_E]) AS [9_E],
SUM([10_E]) AS [10_E],
SUM([11_E]) AS [11_E],
SUM([12_E]) AS [12_E],
SUM([13_E]) AS [13_E],
SUM([14_E]) AS [14_E],
SUM([15_E]) AS [15_E],
SUM([16_E]) AS [16_E],
SUM([17_E]) AS [17_E],
SUM([18_E]) AS [18_E],
SUM([19_E]) AS [19_E],
SUM([20_E]) AS [20_E],
SUM([21_E]) AS [21_E],
SUM([22_E]) AS [22_E],
SUM([23_E]) AS [23_E],
SUM([24_E]) AS [24_E],
SUM([25_E]) AS [25_E],
SUM([26_E]) AS [26_E],
SUM([27_E]) AS [27_E],
SUM([28_E]) AS [28_E],
SUM([29_E]) AS [29_E],
SUM([30_E]) AS [30_E],
SUM([31_E]) AS [31_E],
SUM([1_GY]) AS [1_GY],
SUM([2_GY]) AS [2_GY],
SUM([3_GY]) AS [3_GY],
SUM([4_GY]) AS [4_GY],
SUM([5_GY]) AS [5_GY],
SUM([6_GY]) AS [6_GY],
SUM([7_GY]) AS [7_GY],
SUM([8_GY]) AS [8_GY],
SUM([9_GY]) AS [9_GY],
SUM([10_GY]) AS [10_GY],
SUM([11_GY]) AS [11_GY],
SUM([12_GY]) AS [12_GY],
SUM([13_GY]) AS [13_GY],
SUM([14_GY]) AS [14_GY],
SUM([15_GY]) AS [15_GY],
SUM([16_GY]) AS [16_GY],
SUM([17_GY]) AS [17_GY],
SUM([18_GY]) AS [18_GY],
SUM([19_GY]) AS [19_GY],
SUM([20_GY]) AS [20_GY],
SUM([21_GY]) AS [21_GY],
SUM([22_GY]) AS [22_GY],
SUM([23_GY]) AS [23_GY],
SUM([24_GY]) AS [24_GY], SUM([25_GY]) AS [25_GY], SUM([26_GY]) AS [26_GY], SUM([27_GY]) AS [27_GY], SUM([28_GY]) AS [28_GY], SUM([29_GY]) AS [29_GY],SUM([30_GY]) AS [30_GY], SUM([31_GY]) AS [31_GY]
FROM #mulasztas AS m
PIVOT (SUM(HianyzasErtek) for Nap in
(
[1_E],[2_E],[3_E],[4_E],[5_E],[6_E],[7_E],[8_E],[9_E],[10_E],[11_E],[12_E],[13_E],[14_E],[15_E],[16_E],[17_E],[18_E],[19_E],[20_E],[21_E],[22_E],[23_E],[24_E],[25_E],[26_E],[27_E],[28_E],[29_E],[30_E],[31_E],
[1_GY],[2_GY],[3_GY],[4_GY],[5_GY],[6_GY],[7_GY],[8_GY],[9_GY],[10_GY],[11_GY],[12_GY],[13_GY],[14_GY],[15_GY],[16_GY],[17_GY],[18_GY],[19_GY],[20_GY],[21_GY],[22_GY],[23_GY],[24_GY],[25_GY],[26_GY],[27_GY],[28_GY],[29_GY],[30_GY],[31_GY]
)
) pv
GROUP BY Tanulo
) m ON m.Tanulo = tanulok.id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS MULASZTASOKSZAMA FROM #igazolas WHERE (Gyakorlati = ''F'' OR Gyakorlati IS NULL) GROUP BY Tanulo) AS Osszes_E ON Osszes_E.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS IGAZOLTSZAMA FROM #igazolas i WHERE (Gyakorlati = ''F'' OR Gyakorlati IS NULL) AND i.IgazoltE=''T'' GROUP BY Tanulo) AS Igazolt_E ON Igazolt_E.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS IGAZOLATLANSZAMA FROM #igazolas i WHERE (Gyakorlati = ''F'' OR Gyakorlati IS NULL) AND i.IgazoltE=''F'' GROUP BY Tanulo) AS Igazolatlan_E ON Igazolatlan_E.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS MULASZTASOKSZAMA FROM #igazolas WHERE Gyakorlati = ''T'' GROUP BY Tanulo) AS Osszes_Gy ON Osszes_Gy.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS IGAZOLTSZAMA FROM #igazolas i WHERE Gyakorlati = ''T'' AND i.IgazoltE=''T'' GROUP BY Tanulo) AS Igazolt_Gy ON Igazolt_Gy.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(HianyzasErtek) AS IGAZOLATLANSZAMA FROM #igazolas i WHERE Gyakorlati = ''T'' AND i.IgazoltE=''F'' GROUP BY Tanulo) AS Igazolatlan_Gy ON Igazolatlan_Gy.Tanulo = tanulok.Id'
SET @query +=
' LEFT JOIN (SELECT Tanulo, SUM(KesettPerc) AS IGAZOLTPERC FROM #igazolas i WHERE (Gyakorlati = ''F'' OR Gyakorlati IS NULL) AND i.IgazoltE=''T'' GROUP BY Tanulo) AS igazoltkeses_e ON igazoltkeses_e.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(KesettPerc) AS IGAZOLTPERC FROM #igazolas i WHERE Gyakorlati = ''T'' AND i.IgazoltE=''T'' GROUP BY Tanulo) AS igazoltkeses_gy ON igazoltkeses_gy.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(KesettPerc) AS IGAZOLATLANPERC FROM #igazolas i WHERE (Gyakorlati = ''F'' OR Gyakorlati IS NULL) AND (i.IgazoltE=''F'' OR i.IgazoltE IS NULL) GROUP BY Tanulo) AS igazolatlankeses_e ON igazolatlankeses_e.Tanulo = tanulok.Id
LEFT JOIN (SELECT Tanulo, SUM(KesettPerc) AS IGAZOLATLANPERC FROM #igazolas i WHERE Gyakorlati = ''T'' AND (i.IgazoltE=''F'' OR i.IgazoltE IS NULL) GROUP BY Tanulo) AS igazolatlankeses_gy ON igazolatlankeses_gy.Tanulo = tanulok.Id
INNER JOIN T_FELHASZNALO_OSSZES f ON f.id = tanulok.Id
ORDER BY f.c_nyomtatasinev';
exec sp_executesql @query;
END
DROP TABLE #mulasztas
DROP TABLE #tanulo
DROP TABLE #igazolas
DROP TABLE #igazolastipus
DROP TABLE #teljesnaposmul
END
GO

View File

@@ -0,0 +1,69 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS sp_GetOsztalyokEvesOraszama
GO
CREATE PROCEDURE sp_GetOsztalyokEvesOraszama
@tanevID int,
@tanitasiHetekSzamaVegzos INT = 32,
@tanitasiHetekSzamaNemVegzos INT = 36,
@isAltantargyBeszamitasa BIT
AS
BEGIN
declare @osztalyok TABLE (
OsztalyId INT
,OsztalyNev NVARCHAR(255)
)
INSERT INTO @osztalyok SELECT * FROM fnGetDokumentumOsztalyokTanevenkent(@tanevID) ORDER BY OsztalyId ASC
SELECT * FROM @osztalyok
DECLARE kurzor CURSOR FOR
SELECT OsztalyId, OsztalyNev FROM @osztalyok
LEFT JOIN (
SELECT
COUNT(T_TANULOCSOPORT_OSSZES.C_TANULOID) tanuloCount,
T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID
FROM
T_TANULOCSOPORT_OSSZES
INNER JOIN
T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID AND ocs.TOROLT = 'F'
WHERE
T_TANULOCSOPORT_OSSZES.TOROLT = 'F' AND
T_TANULOCSOPORT_OSSZES.C_TANEVID = @tanevID
GROUP BY T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID
) tanuloSzam ON tanuloSzam.C_OSZTALYCSOPORTID = OsztalyId
WHERE
tanuloCount > 0
ORDER BY OsztalyId
DECLARE @OsztalyId int, @OsztalyNev nvarchar(255)
OPEN kurzor
FETCH NEXT FROM kurzor INTO @OsztalyId, @OsztalyNev
WHILE @@FETCH_STATUS = 0 BEGIN
SELECT DISTINCT
tanulo.C_NYOMTATASINEV AS TanuloNev
,tanulo.C_OKTATASIAZONOSITO AS OktAzon
,tantargy.C_NEV AS TantargyNev
,oraszamok.Oraszam AS EvesOraszam
,@OsztalyNev AS OsztalyNev
,@OsztalyId AS OsztalyId
FROM fnGetDokumentumTanulokEvesOraszamaiOsztalyonkent(@tanevID, @OsztalyId, @tanitasiHetekSzamaVegzos, @tanitasiHetekSzamaNemVegzos, @isAltantargyBeszamitasa) oraszamok
INNER JOIN T_FELHASZNALO_OSSZES tanulo ON tanulo.ID = oraszamok.TanuloId
INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.ID = oraszamok.TantargyID
FETCH NEXT FROM kurzor INTO @OsztalyId, @OsztalyNev
END
CLOSE kurzor
DEALLOCATE kurzor
END
GO

View File

@@ -0,0 +1,257 @@
DROP PROCEDURE IF EXISTS sp_GetPedagogusAltalAdottErtekelesek
GO
CREATE PROCEDURE sp_GetPedagogusAltalAdottErtekelesek
@pTanarId int
,@pEvkozi int
,@pFelevi int
,@pEvvegi int
,@pTanevId int
,@pFelevVegeNaptipusId int
,@pErtekelesmodSuly bit = 0
,@pIntezmenyId int
,@pFeladatKategoriaId int = NULL
AS BEGIN
SET NOCOUNT ON
DECLARE @osztalyId int = 0
,@tantargyId int = 0
,@rowId int = 0
,@maxCharNumErtekelesSzoveg int = 20
,@felevVege date
,@isVegzos char
,@VegzosUtolsoNap datetime
,@UtolsoNap datetime
,@VizsgaltNap datetime
,@UtolsoNapTanev datetime
,@UtolsoNapTanevRendje datetime
SELECT @felevVege = ISNULL(C_DATUM,GETDATE()) FROM T_TANEVRENDJE WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pFelevVegeNaptipusId
SELECT TOP 1 @UtolsoNapTanevRendje = C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_NAPTIPUSA = 1395 AND C_TANEVID = @pTanevId AND TOROLT = 'F'
SELECT TOP 1 @UtolsoNapTanev = C_UTOLSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @pTanevId AND TOROLT = 'F'
--súlyok
SELECT
tas.C_ERTEKELESMODID AS ID
,dib.C_NAME
,tas.C_ERTEKELESMODID --WTF??
,C_SULY
,CAST(C_SULY AS nvarchar) + '%' AS C_SULYSZAZALEK, ' (' + NCHAR(97 + ROW_NUMBER() OVER(ORDER BY dib.C_ORDER ASC) - 1) + ')' AS Row#
INTO #tempTanariAtlagsuly
FROM T_TANARIATLAGSULY_OSSZES tas
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dib ON dib.ID = tas.C_ERTEKELESMODID AND dib.C_TANEVID=tas.C_TANEVID AND dib.TOROLT='F'
WHERE tas.TOROLT='F' AND tas.C_TANEVID=@pTanevId
--megjelenítendő tgy-ocs-evg hármasok
SELECT
ROW_NUMBER () OVER (ORDER BY TARGYKATEGSORREND, EVFOLYAMSORREND, OSZTALYCSOPORTNEV, TARGYNEV) AS SORSZAM
,TANTARGYID
,OSZTALYID
,CAST(ROW_NUMBER ( ) OVER (ORDER BY TARGYKATEGSORREND, EVFOLYAMSORREND, OSZTALYCSOPORTNEV, TARGYNEV) AS nvarchar(10)) + '. ' + NEV AS NEV
INTO #tempFoglalkozasok
FROM (
SELECT
tgy.ID AS TANTARGYID
,ocs.ID AS OSZTALYID
,dibKateg.C_ORDER AS TARGYKATEGSORREND
,dibEvf.C_ORDER AS EVFOLYAMSORREND
,ocs.C_NEV AS OSZTALYCSOPORTNEV
,tgy.C_NEV AS TARGYNEV
,ocs.C_NEV + '-' + tgy.C_NEV AS NEV
FROM T_FOGLALKOZAS_OSSZES f
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = f.C_OSZTALYCSOPORTID AND (ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL) AND ocs.TOROLT = 'F'
INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = f.C_TANTARGYID AND tgy.TOROLT = 'F'
INNER JOIN T_DICTIONARYITEMBASE_OSSZES dibKateg ON dibKateg.ID = tgy.C_TARGYKATEGORIA AND dibKateg.C_TANEVID=f.C_TANEVID AND dibKateg.TOROLT='F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS dibEvf ON dibEvf.ID = ocs.C_EVFOLYAMTIPUSA AND dibEvf.C_TANEVID=f.C_TANEVID AND dibEvf.TOROLT='F'
WHERE f.TOROLT = 'F' AND f.C_TANARID = @pTanarId AND f.C_TANEVID=@pTanevId
UNION
SELECT
tgy.ID AS TANTARGYID
,ocs.ID AS OSZTALYID
,dibKateg.C_ORDER AS TARGYKATEGSORREND
,dibEvf.C_ORDER AS EVFOLYAMSORREND
,ocs.C_NEV AS OSZTALYCSOPORTNEV
,tgy.C_NEV AS TARGYNEV
,ocs.C_NEV + '-' + tgy.C_NEV AS NEV
FROM T_TANULOERTEKELES_OSSZES te
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = te.C_OSZTALYCSOPORTID AND (ocs.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL) AND ocs.TOROLT = 'F'
INNER JOIN T_TANTARGY_OSSZES tgy ON tgy.ID = te.C_TANTARGYID AND tgy.TOROLT = 'F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS dibKateg ON dibKateg.ID = tgy.C_TARGYKATEGORIA AND dibKateg.C_TANEVID = tgy.C_TANEVID AND dibKateg.TOROLT='F'
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS dibEvf ON dibEvf.ID = ocs.C_EVFOLYAMTIPUSA AND dibEvf.C_TANEVID = ocs.C_TANEVID AND dibEvf.TOROLT='F'
WHERE te.TOROLT = 'F' AND te.C_ERTEKELOID = @pTanarId AND te.C_TANEVID = @pTanevId
) AS FOGLALKOZASOK
CREATE TABLE #tempErtekeles (
ID int
,TANULOID int
,NEV nvarchar(255)
,OKTAZON nvarchar(255)
,C_BELEPESDATUM nvarchar(15)
,C_KILEPESDATUM nvarchar(15)
,OSZTID int
,ERTEKELESDATUMA nvarchar(255)
,ERTEKELESTIPUSA int
,ERTEKELESMODJA int
,ERTEKELES nvarchar(MAX)
,OSZTALYZAT int
,HONAP int
)
SELECT * FROM #tempFoglalkozasok
ORDER BY SORSZAM;
DECLARE foglCur CURSOR FOR
SELECT TANTARGYID,OSZTALYID FROM #tempFoglalkozasok
OPEN foglCur
FETCH NEXT FROM foglCur INTO @tantargyId,@osztalyId
WHILE @@FETCH_STATUS = 0
BEGIN
DELETE FROM #tempErtekeles
SET @isVegzos = (SELECT TOP 1 C_VEGZOSEVFOLYAM FROM T_OSZTALYCSOPORT_OSSZES WHERE ID = @osztalyId)
SET @VegzosUtolsoNap = (SELECT dbo.fnGetOsztalyVegzosTanitasiNap(@osztalyId, @pIntezmenyId, @pTanevId))
SET @UtolsoNap = IIF(@isVegzos = 'T', COALESCE(@VegzosUtolsoNap, @UtolsoNapTanevRendje, @UtolsoNapTanev), ISNULL(@UtolsoNapTanevRendje, @UtolsoNapTanev))
SET @VizsgaltNap = (SELECT IIF(@UtolsoNap > GETDATE(), GETDATE(), @UtolsoNap))
INSERT INTO #tempErtekeles
SELECT DISTINCT
te.ID
,tcs.C_TANULOID AS TANULOID
,fh.C_NYOMTATASINEV AS NEV
,fh.C_OKTATASIAZONOSITO AS OKTAZON
,COALESCE(FORMAT(tcs.C_BELEPESDATUM, 'yyyy. MM. dd'), '') AS C_BELEPESDATUM
,COALESCE(FORMAT(tcs.C_KILEPESDATUM, 'yyyy. MM. dd'), '') AS C_KILEPESDATUM
,tcs.C_OSZTALYCSOPORTID AS OSZTID
,te.C_DATUM AS ERTEKELESDATUMA
,te.C_TIPUSID AS ERTEKELESTIPUSA
,te.C_ERTEKELESMODID AS ERTEKELESMODJA
,(IIF(C_TIPUSID NOT IN (@pEvkozi, @pFelevi, @pEvvegi),'{','') +
CASE WHEN dibJegy.C_VALUE IS NOT NULL
THEN CONVERT(nvarchar, dibJegy.C_VALUE)
WHEN C_ERTEKELESSZOVEG IS NOT NULL
THEN '['+ IIF (LEN(C_ERTEKELESSZOVEG) > @maxCharNumErtekelesSzoveg ,STUFF(C_ERTEKELESSZOVEG, @maxCharNumErtekelesSzoveg, 1000000, '...'),C_ERTEKELESSZOVEG)+']'
ELSE CONVERT(nvarchar, C_ERTEKELESSZAZALEK) + '%' END +
IIF(C_TIPUSID NOT IN (@pEvkozi, @pFelevi, @pEvvegi),'}' ,'' ) +
IIF(@pErtekelesmodSuly = 1 AND C_TIPUSID = @pEvkozi AND ISNULL(TANARIATLAGSULY.C_SULY, 100) <> 100,TANARIATLAGSULY.Row#,'')
) AS ERTEKELES
,dibJegy.C_VALUE AS OSZTALYZAT
,CASE
WHEN MONTH(C_DATUM) >= 9 THEN 100
WHEN MONTH(C_DATUM) > 1 AND MONTH(C_DATUM) < 9 THEN 200
WHEN C_DATUM > @felevVege THEN 200
ELSE 100 END + MONTH(C_DATUM) AS HONAP
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_FELHASZNALO_OSSZES fh ON fh.ID = tcs.C_TANULOID
LEFT JOIN T_TANULOERTEKELES_OSSZES te ON te.C_TANTARGYID = @tantargyId AND te.C_TANULOID = tcs.C_TANULOID AND te.TOROLT = 'F' AND te.C_TANEVID = @pTanevId AND te.C_ERTEKELOID = @pTanarId
--NOTE: Az évfolyamváltot tanulók szűréséhez kell! -- INNEN
INNER JOIN T_TANULOCSOPORT_OSSZES tcsv ON tcsv.C_TANULOID = te.C_TANULOID AND tcsv.TOROLT = 'F'
AND tcsv.C_BELEPESDATUM <= @VizsgaltNap AND (tcsv.C_KILEPESDATUM IS NULL OR tcsv.C_KILEPESDATUM > @VizsgaltNap)
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = tcsv.C_OSZTALYCSOPORTID AND o.TOROLT = 'F'
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocsv ON ocsv.ID = o.ID AND ocsv.TOROLT = 'F' AND (ocsv.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL)
LEFT JOIN T_OSZTALYCSOPORT_OSSZES OsztalyEvfolyamSzures ON OsztalyEvfolyamSzures.ID = te.C_ROGZITESKORITANULOOSZTALYID AND OsztalyEvfolyamSzures.TOROLT = 'F'
AND OsztalyEvfolyamSzures.C_EVFOLYAMTIPUSA = ocsv.C_EVFOLYAMTIPUSA AND (OsztalyEvfolyamSzures.C_FELADATKATEGORIAID = @pFeladatKategoriaId OR @pFeladatKategoriaId IS NULL)
--NOTE: Az évfolyamváltot tanulók szűréséhez kell! EDDIG
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS dibJegy ON dibJegy.ID = te.C_ERTEKELESOSZTALYZATID AND dibJegy.TOROLT = 'F' AND dibJegy.C_TANEVID = @pTanevId
LEFT JOIN #tempTanariAtlagsuly AS TANARIATLAGSULY on TANARIATLAGSULY.C_ERTEKELESMODID = te.C_ERTEKELESMODID
WHERE tcs.C_TANEVID = @pTanevId AND tcs.C_OSZTALYCSOPORTID = @osztalyId AND tcs.TOROLT = 'F'
--NOTE: AMI-s értékelések miatt, ott nincs mentve C_ROGZITESKORITANULOOSZTALYID
AND ((te.C_ROGZITESKORITANULOOSZTALYID IS NULL) OR (OsztalyEvfolyamSzures.ID IS NOT NULL))
SELECT
CAST(ROW_NUMBER () OVER (ORDER BY NEV) AS nvarchar(10)) + '.' AS '#'
,RESULT.*
FROM (
SELECT
PIVOTERTEKEL.TANULOID AS ID
,NEV AS 'Név'
,OKTAZON AS 'Okt. azonosító'
,BESOROLAS AS 'Csoport tagja'
,[109] AS Szeptember
,[110] AS Október
,[111] AS November
,[112] AS December
,[101] AS 'Január / I.'
,FELEV.JEGY AS [I. félév$@8]
,[201] AS 'Január / II.'
,[202] AS Február
,[203] AS Március
,[204] AS Április
,[205] AS Május
,[206] AS Június
,EVVEGE.JEGY AS [II. félév$@9]
,ATLAG.SULYOZOTTATLAG AS 'Átlag'
FROM (
SELECT DISTINCT
T1.NEV
,T1.OKTAZON
,T1.C_BELEPESDATUM + ' - ' + T1.C_KILEPESDATUM AS BESOROLAS
,STUFF ((
SELECT ', ' + ISNULL(T1.ERTEKELES, '')
FROM #tempErtekeles AS T2
WHERE T1.TANULOID = T2.TANULOID AND T1.HONAP = T2.HONAP
AND T1.ERTEKELESTIPUSA NOT IN (@pFelevi, @pEvvegi)
AND T2.ERTEKELESTIPUSA NOT IN (@pFelevi, @pEvvegi)
ORDER BY ERTEKELESDATUMA
FOR XML PATH ('')
), 1, 2, '') AS ERTEKELESEK
,T1.HONAP
,T1.TANULOID
FROM #tempErtekeles AS T1
) AS ERDEMJEGYEK
PIVOT (MAX(ERTEKELESEK) FOR HONAP IN ([109], [110], [111], [112], [101], [201], [202], [203], [204], [205], [206])) AS PIVOTERTEKEL
LEFT JOIN (
SELECT
TANULOID
,AVG(OSZTALYZAT) AS JEGY
FROM #tempErtekeles
WHERE ERTEKELESTIPUSA = @pFelevi
GROUP BY TANULOID
) AS FELEV ON PIVOTERTEKEL.TANULOID = FELEV.TANULOID
LEFT JOIN (
SELECT
TANULOID
,AVG(OSZTALYZAT) AS JEGY
FROM #tempErtekeles
WHERE ERTEKELESTIPUSA = @pEvvegi
GROUP BY TANULOID
) AS EVVEGE ON PIVOTERTEKEL.TANULOID = EVVEGE.TANULOID
LEFT JOIN (
SELECT
TANULOID
,ROUND(AVG(CAST(OSZTALYZAT AS FLOAT)), 2) AS ATLAG
,ROUND(SUM(OSZTALYZAT * ISNULL(T_TANARIATLAGSULY.C_SULY, 100) / 100.0) / SUM(ISNULL(T_TANARIATLAGSULY.C_SULY, 100) / 100.0), 2) AS SULYOZOTTATLAG
FROM #tempErtekeles AS tempErtekeles
LEFT JOIN T_TANARIATLAGSULY on T_TANARIATLAGSULY.C_ERTEKELESMODID = tempErtekeles.ERTEKELESMODJA AND T_TANARIATLAGSULY.TOROLT = 'F' AND T_TANARIATLAGSULY.C_TANEVID = @pTanevId
WHERE ERTEKELESTIPUSA = @pEvkozi AND OSZTALYZAT IS NOT NULL
GROUP BY TANULOID
) AS ATLAG ON PIVOTERTEKEL.TANULOID = ATLAG.TANULOID
) AS RESULT
ORDER BY NEV;
FETCH NEXT FROM foglCur INTO @tantargyId,@osztalyId
END
CLOSE foglCur
DEALLOCATE foglCur
SELECT
ID
,Row# AS 'Jelmagyarázat'
,C_NAME AS 'Értékelésmód'
,C_SULYSZAZALEK AS 'Értékelés súlyozása'
FROM #tempTanariAtlagsuly
ORDER BY Row#;
-- Iktatás adatok
SELECT
f.ID AS PedagogusId
,f.C_OKTATASIAZONOSITO AS PedagogusOktAzon
,mua.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
FROM T_FELHASZNALO_OSSZES AS f
INNER JOIN T_MUNKAUGYIADATOK_OSSZES AS mua ON mua.C_ALKALMAZOTTID = f.ID AND mua.TOROLT='F'
WHERE f.ID = @pTanarId AND f.C_TANEVID = @pTanevId AND f.TOROLT='F'
END
GO

View File

@@ -0,0 +1,45 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS [dbo].[sp_GetTanevKozbenKilepettTanulok]
GO
-- =============================================
-- Author: Rudlof Kristóf
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[sp_GetTanevKozbenKilepettTanulok]
@tanevID int
AS
BEGIN
SELECT
c_nev OsztalyNev
FROM T_OSZTALY_OSSZES o
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on ocs.ID=o.ID AND ocs.C_FELADATKATEGORIAID = 7553 /*OktNevelesiKategoriaEnum.Alapkepzes*/
WHERE o.TOROLT='F' AND o.C_ALTANEVID=@tanevId
SELECT ocs.C_NEV COLUMN379
, f.C_NYOMTATASINEV COLUMN20
,f.C_OKTATASIAZONOSITO AS TanuloOktAzon
, FORMAT(tcs.C_BELEPESDATUM, 'yyyy.MM.dd.') COLUMN3784
, FORMAT(tcs.C_KILEPESDATUM, 'yyyy.MM.dd.') COLUMN1
,tcs.C_ZARADEK COLUMN1557
,o.ID AS OsztalyId
,f.ID AS TanuloId
FROM T_TANULOCSOPORT_OSSZES tcs
INNER JOIN T_OSZTALY_OSSZES o on tcs.C_OSZTALYCSOPORTID=o.ID
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs on o.ID=ocs.ID
INNER JOIN T_FELHASZNALO_OSSZES f on f.ID=tcs.C_TANULOID
WHERE
tcs.C_KILEPESDATUM IS NOT NULL
and tcs.C_TANEVID=@tanevId
and tcs.TOROLT='F'
ORDER BY f.C_NYOMTATASINEV
END
GO

View File

@@ -0,0 +1,297 @@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS [dbo].[sp_Nyomtatvany_Excel_IdoszakiTanuloStatisztika]
GO
CREATE PROCEDURE [dbo].[sp_Nyomtatvany_Excel_IdoszakiTanuloStatisztika]
@pTanevId INT,
@pIntezmenyId INT,
@pErtekelestipusaId INT,
@pLezaroNaptipusId INT,
@pTanevrendjeTanevKezdeteNaptipusId INT = 1394,
@pMulasztasTipusIdKeses INT = 1499,
@pMulasztasTipusIdHianyzas INT = 1500,
@pAtsoroltTanuloAdatok INT = 1,
@pElmeletgyakorlat BIT = 0
AS
BEGIN
SET NOCOUNT ON;
--Const
DECLARE @ElsoFelveVege INT = 1400
DECLARE @IneVege INT = 1403
DECLARE @IIIneVege INT = 1404
DECLARE @UtolsoTanitasiNap INT = 1395
DECLARE @VegzosUtolsoTanitasiNap INT = 1402
DECLARE @iskolaErdekuParam INT = 1683;
DECLARE @iskolaErdekuSzamit BIT = dbo.fnGetRendszerbeallitasEnumBool(@iskolaErdekuParam, @pIntezmenyId, @pTanevId);
DECLARE @oid int, @onev nvarchar(50), @okf char(1), @ovegz char(1)
DECLARE osztaly_cursor CURSOR FOR
SELECT T_OSZTALYCSOPORT_OSSZES.ID AS OSZTALYID, T_OSZTALYCSOPORT_OSSZES.C_NEV AS NEV, C_KERESZTFELEVES AS KERESZTFELEVES, C_VEGZOSEVFOLYAM AS VEGZOSEVFOLYAM
FROM T_OSZTALYCSOPORT_OSSZES
JOIN T_OSZTALY_OSSZES ON T_OSZTALY_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID
JOIN T_TANEV_OSSZES ON T_TANEV_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_TANEVID
JOIN T_DICTIONARYITEMBASE_OSSZES ON T_DICTIONARYITEMBASE_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA AND T_DICTIONARYITEMBASE_OSSZES.TOROLT = 'F' AND T_DICTIONARYITEMBASE_OSSZES.C_TANEVID = T_TANEV_OSSZES.ID
WHERE T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F' AND T_OSZTALYCSOPORT_OSSZES.C_INTEZMENYID=@pIntezmenyId AND T_TANEV_OSSZES.TOROLT = 'F' AND T_TANEV_OSSZES.ID = @pTanevId
AND T_OSZTALYCSOPORT_OSSZES.C_FELADATKATEGORIAID = 7553 /*OktNevelesiKategoriaEnum.Alapkepzes*/
ORDER BY T_DICTIONARYITEMBASE_OSSZES.C_ORDER ASC, T_OSZTALYCSOPORT_OSSZES.C_NEV ASC;
CREATE TABLE #osztalyTanulok (TANULOID NVARCHAR(20) COLLATE DATABASE_DEFAULT PRIMARY KEY, OSZTALYID INT, TANULONEV NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, OKTATASIAZONOSITO NVARCHAR(MAX), OSZTALYNEV NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, BELEPESDATUM DATE, KILEPESDATUM DATE);
CREATE TABLE #tantargyak (TANTARGYID INT, TANTARGY_NEV NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, TARGYKATEGORIA_NEV NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, TARGYKATEGORIA_SORSZAM INT, C_FOTARGYE CHAR(1) COLLATE DATABASE_DEFAULT, C_ALTANTARGYKENTNYOMTATVANYBAN CHAR(1) COLLATE DATABASE_DEFAULT);
CREATE TABLE #szurtMulasztas (TIPUS_CHAR CHAR(1) COLLATE DATABASE_DEFAULT, C_TIPUS INT , C_IGAZOLT CHAR(1) COLLATE DATABASE_DEFAULT, TANULOID NVARCHAR(20) COLLATE DATABASE_DEFAULT, C_GYAKORLATI CHAR(1) COLLATE DATABASE_DEFAULT, KESESPERC INT, MULASZTASOK_SZAMA INT);
CREATE TABLE #szurtErtekeles (
T_TANULOERTEKELES_ID INT, TANULOID NVARCHAR(20) COLLATE DATABASE_DEFAULT, ERTEKELES NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, ERTEKELES_SZOVEG_MEGJEGYZES NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, C_ERTEKELESDATUM DATETIME,
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
);
CREATE TABLE #szurtMagszorg (T_TANULOERTEKELES_ID INT, TANULOID NVARCHAR(20) COLLATE DATABASE_DEFAULT, MagatartasOsztalyzat NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, MagatartasErtek NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, SzorgalomOsztalyzat NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, SzorgalomErtek NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, ERTEKELESSZOVEG NVARCHAR(MAX) COLLATE DATABASE_DEFAULT, ERTEKELESDATUM DATETIME, TOROLT CHAR(1) COLLATE DATABASE_DEFAULT);
CREATE TABLE #szurtMulasztasRes (TIPUS_CHAR CHAR(1) COLLATE DATABASE_DEFAULT, C_TIPUS INT , C_IGAZOLT CHAR(1) COLLATE DATABASE_DEFAULT, TANULOID NVARCHAR(20) COLLATE DATABASE_DEFAULT, KESESPERC INT, KESESORA INT, MULASZTASOK_SZAMA INT, C_GYAKORLATI CHAR(1) COLLATE DATABASE_DEFAULT);
CREATE TABLE #szurtMulasztasOsszesRes (C_IGAZOLT CHAR(1) COLLATE DATABASE_DEFAULT, TANULOID NVARCHAR(20) COLLATE DATABASE_DEFAULT, MULASZTASOK_SZAMA INT, C_GYAKORLATI CHAR(1) COLLATE DATABASE_DEFAULT);
INSERT INTO #tantargyak (TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, C_FOTARGYE, C_ALTANTARGYKENTNYOMTATVANYBAN)
SELECT TANTARGYAK.ID AS TANTARGYID, COALESCE(TANTARGYAK.C_NEVNYOMTATVANYBAN, TANTARGYAK.C_NEV) AS TANTARGY_NEV, TARGYKATEG.C_NAME AS TARGYKATEGORIA_NEV, TARGYKATEG.C_VALUE AS TARGYKATEGORIA_SORSZAM, TANTARGYAK.C_FOTARGYE, TANTARGYAK.C_ALTANTARGYKENTNYOMTATVANYBAN
FROM T_TANTARGY_OSSZES AS TANTARGYAK
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKATEG ON TARGYKATEG.ID = TANTARGYAK.C_TARGYKATEGORIA AND TARGYKATEG.C_TANEVID = TANTARGYAK.C_TANEVID
WHERE TANTARGYAK.TOROLT = 'F' AND TANTARGYAK.C_TANEVID = @pTanevId
ORDER BY TARGYKATEGORIA_SORSZAM, TANTARGY_NEV;
DROP TABLE IF EXISTS #tempMulasztas;
CREATE TABLE #tempMulasztas (
ID INT IDENTITY(1,1) PRIMARY KEY,
TIPUS_CHAR CHAR(1) COLLATE DATABASE_DEFAULT, TIPUS INT, IGAZOLT CHAR(1) COLLATE DATABASE_DEFAULT, TANULOID NVARCHAR(20) COLLATE DATABASE_DEFAULT, GYAKORLATI CHAR(1) COLLATE DATABASE_DEFAULT, KESESPERC INT, MULASZTASOK_SZAMA INT, OSZTALYCSOPORTID INT, DATUM DATETIME);
INSERT INTO #tempMulasztas(TIPUS_CHAR, TIPUS, IGAZOLT, TANULOID, GYAKORLATI, KESESPERC, MULASZTASOK_SZAMA, OSZTALYCSOPORTID, DATUM)
SELECT IIF(C_TIPUS = @pMulasztasTipusIdKeses, 'K', 'H'), C_TIPUS, C_IGAZOLT, C_ORATANULOIID, C_GYAKORLATI, SUM(C_KESESPERCBEN), COUNT(1) AS MULASZTASOK_SZAMA, TanitasiOra.C_OSZTALYCSOPORTID, C_DATUM
FROM T_TANULOMULASZTAS_OSSZES TanuloMulasztas
INNER JOIN T_TANITASIORA_OSSZES TanitasiOra ON TanitasiOra.ID = TanuloMulasztas.C_TANITASIORAKID
INNER JOIN T_TANULOCSOPORT_OSSZES TanuloCsoport ON
TanuloCsoport.C_TANULOID = TanuloMulasztas.C_ORATANULOIID
AND TanuloCsoport.C_OSZTALYCSOPORTID = TanitasiOra.C_OSZTALYCSOPORTID
AND TanuloCsoport.TOROLT = 'F'
AND TanitasiOra.C_DATUM BETWEEN TanuloCsoport.C_BELEPESDATUM AND ISNULL(TanuloCsoport.C_KILEPESDATUM, GETDATE())
INNER JOIN T_TANTARGY_OSSZES t on t.ID = TanitasiOra.C_TANTARGYID
WHERE TanuloMulasztas.C_TIPUS IN (@pMulasztasTipusIdKeses, @pMulasztasTipusIdHianyzas)
AND TanitasiOra.C_OSZTALYCSOPORTID IN (SELECT Id FROM fnGetDokumentumOsztalyVagyTanoraiCsoport (@pTanevId))
AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA IS NULL OR C_IGAZOLASTIPUSA <> 1533))
AND TanuloMulasztas.TOROLT = 'F' AND TanuloMulasztas.C_IGAZOLT IS NOT NULL
AND TanitasiOra.TOROLT = 'F' AND TanitasiOra.C_MEGTARTOTT = 'T'
AND TanuloMulasztas.C_TANEVID = @pTanevId
GROUP BY C_TIPUS, C_IGAZOLT, C_ORATANULOIID, C_GYAKORLATI, TanitasiOra.C_OSZTALYCSOPORTID, C_DATUM
OPEN osztaly_cursor
FETCH NEXT FROM osztaly_cursor
INTO @oid, @onev, @okf, @ovegz
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @keresztFeleves BIT = (SELECT IIF(@okf = 'T', 1, 0))
DECLARE @vegzosEvfolyamu BIT = (SELECT IIF(@ovegz = 'T', 1, 0))
--Osztalyjellemzok alapjan a nyito/lezaro naptipus csereje
DECLARE @pKezdeteOsztalyNaptipusId INT = (
IIF(@keresztFeleves = 0, @pTanevrendjeTanevKezdeteNaptipusId,
CASE
WHEN @pLezaroNaptipusId = @ElsoFelveVege THEN @ElsoFelveVege
WHEN @pLezaroNaptipusId = @UtolsoTanitasiNap THEN @pTanevrendjeTanevKezdeteNaptipusId
WHEN @pLezaroNaptipusId = @IneVege THEN @ElsoFelveVege
WHEN @pLezaroNaptipusId = @IIIneVege THEN @pTanevrendjeTanevKezdeteNaptipusId
END)
)
DECLARE @pLezaroOsztalyNaptipusId INT = (
IIF(@keresztFeleves = 0, IIF(@vegzosEvfolyamu = 1 AND @pLezaroNaptipusId = @UtolsoTanitasiNap, @VegzosUtolsoTanitasiNap, @pLezaroNaptipusId),
CASE
WHEN @pLezaroNaptipusId = @ElsoFelveVege THEN @UtolsoTanitasiNap
WHEN @pLezaroNaptipusId = @UtolsoTanitasiNap THEN @ElsoFelveVege
WHEN @pLezaroNaptipusId = @IneVege THEN @IIIneVege
WHEN @pLezaroNaptipusId = @IIIneVege THEN @IneVege
END)
)
DECLARE @idoszakEleje DATE = (
SELECT ISNULL(
(SELECT TOP 1 C_DATUM
FROM T_TANEVRENDJE_OSSZES
LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ON T_TANEVRENDJE_OSSZES.ID = T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID
WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pKezdeteOsztalyNaptipusId AND TOROLT = 'F' AND (C_OSZTALYCSOPORTID IS NULL OR C_OSZTALYCSOPORTID = @oid)
ORDER BY C_OSZTALYCSOPORTID DESC),
(SELECT TOP 1 C_ELSOTANITASINAP FROM T_TANEV_OSSZES WHERE ID = @pTanevId))
);
DECLARE @idoszakVege DATE = (
SELECT ISNULL(
(SELECT TOP 1 C_DATUM
FROM T_TANEVRENDJE_OSSZES
LEFT JOIN T_OSZTALYCSOPORT_TANEVRENDJE ON T_TANEVRENDJE_OSSZES.ID = T_OSZTALYCSOPORT_TANEVRENDJE.C_TANEVRENDJEID
WHERE C_TANEVID = @pTanevId AND C_NAPTIPUSA = @pLezaroOsztalyNaptipusId AND TOROLT = 'F' AND (C_OSZTALYCSOPORTID IS NULL OR C_OSZTALYCSOPORTID = @oid)
ORDER BY C_OSZTALYCSOPORTID DESC),
GETDATE())
);
INSERT INTO #osztalyTanulok (TANULOID, OSZTALYID, TANULONEV, OKTATASIAZONOSITO, OSZTALYNEV, BELEPESDATUM, KILEPESDATUM)
SELECT DISTINCT CAST(TANCSOPORT.C_OSZTALYCSOPORTID AS NVARCHAR) + '_' + CAST(FELHASZNALO.ID AS NVARCHAR) /*AS OSZTALYTANULOID, FELHASZNALO.ID*/ AS TANULOID, TANCSOPORT.C_OSZTALYCSOPORTID AS OSZTALYID, C_NYOMTATASINEV, C_OKTATASIAZONOSITO, C_NEV, C_BELEPESDATUM, C_KILEPESDATUM
FROM T_FELHASZNALO_OSSZES AS FELHASZNALO
INNER JOIN (
SELECT C_TANULOID, C_OSZTALYCSOPORTID, C_NEV, C_BELEPESDATUM, C_KILEPESDATUM
FROM T_TANULOCSOPORT_OSSZES AS TANULOCSOPORT
INNER JOIN T_OSZTALYCSOPORT_OSSZES AS OSZTALYCSOPORT ON OSZTALYCSOPORT.ID = TANULOCSOPORT.C_OSZTALYCSOPORTID
WHERE TANULOCSOPORT.TOROLT = 'F' AND TANULOCSOPORT.C_OSZTALYCSOPORTID = @oid AND TANULOCSOPORT.C_BELEPESDATUM < @idoszakVege AND (@keresztFeleves = 0 OR TANULOCSOPORT.C_BELEPESDATUM >= @idoszakEleje)
AND (TANULOCSOPORT.C_KILEPESDATUM IS NULL OR TANULOCSOPORT.C_KILEPESDATUM >= @idoszakVege)
) AS TANCSOPORT ON TANCSOPORT.C_TANULOID = FELHASZNALO.ID
WHERE FELHASZNALO.TOROLT = 'F' AND TANCSOPORT.C_OSZTALYCSOPORTID = @oid AND FELHASZNALO.C_TANEVID = @pTanevId;
DROP TABLE IF EXISTS #tempOsztalyErtekelesek;
SELECT * INTO #tempOsztalyErtekelesek FROM fnGetDokumentumErtekelesekOsztalyonkent (@pTanevId, @oid, @pErtekelestipusaId, DEFAULT, DEFAULT, @pAtsoroltTanuloAdatok, DEFAULT) AS ERTEKELESEK
INSERT INTO #szurtErtekeles (T_TANULOERTEKELES_ID, TANULOID, ERTEKELES, ERTEKELES_SZOVEG_MEGJEGYZES, C_ERTEKELESDATUM, TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_NEV, TARGYKATEGORIA_SORSZAM, T_TANTARGY_C_FOTARGYE, T_TANTARGY_C_ALTANTARGYKENTNYOMTATVANYBAN, C_OSZTALYCSOPORTID)
SELECT ROW_NUMBER() OVER (ORDER BY TanuloId), CAST(@oid AS NVARCHAR) + '_' + CAST(TanuloId AS NVARCHAR)
,COALESCE(CAST(ErtekelesOsztalyzatValue AS NVARCHAR(MAX)),
IIF(ErtekelesSzoveg IS NOT NULL, CASE WHEN ErtekelesSzovegRovidNev IN ('1', '2', '3', '4', '5') THEN 'Sz' ELSE ErtekelesSzovegRovidNev END, NULL),
ErtekelesSzazalek)
,COALESCE(ErtekelesSzoveg, ErtekelesTema, ''), Datum, TantargyId, TantargyNevZarojellel, TARGYKATEG.C_NAME, TARGYKATEG.C_VALUE, FotargyE, Altantargy, OsztalyCsoportId
FROM #tempOsztalyErtekelesek AS ERTEKELESEK
LEFT JOIN T_DICTIONARYITEMBASE_OSSZES AS TARGYKATEG ON TARGYKATEG.ID = ERTEKELESEK.TargyKategoriaId AND TARGYKATEG.C_TANEVID = @pTanevId
WHERE TantargyId IS NOT NULL AND (FotargyE = 'T' OR Altantargy = 'T')
--MAGATARTÁS-SZORGALOM
INSERT INTO #szurtMagszorg (T_TANULOERTEKELES_ID, TANULOID, MagatartasOsztalyzat, MagatartasErtek, SzorgalomOsztalyzat, SzorgalomErtek, ERTEKELESSZOVEG, ERTEKELESDATUM, TOROLT)
SELECT ROW_NUMBER() OVER (ORDER BY TanuloId) AS ID, CAST(@oid AS NVARCHAR) + '_' + CAST(TanuloId AS NVARCHAR) AS TANULOID,
COALESCE(CAST(MagatartasOsztalyzatValue AS NVARCHAR(MAX)), CAST(MagatartasErtekOsztalyzatkent AS NVARCHAR(MAX)), MagatartasSzovegRovidNev) AS MagatartasOsztalyzat, MagatartasErtek,
COALESCE(CAST(SzorgalomOsztalyzatValue AS NVARCHAR(MAX)), CAST(SzorgalomErtekOsztalyzatkent AS NVARCHAR(MAX)), SzorgalomSzovegRovidNev) AS SzorgalomOsztalyzat, SzorgalomErtek,
ErtekelesSzoveg AS C_ERTEKELESSZOVEG, Datum AS C_ERTEKELESDATUM, 'F' AS TOROLT
FROM #tempOsztalyErtekelesek AS ERTEKELESEK
WHERE TantargyId IS NULL;
--MULASZTÁS
DROP TABLE IF EXISTS #HozottMulasztas
CREATE TABLE #HozottMulasztas (OsztalyId_TanuloID NVARCHAR(20) COLLATE DATABASE_DEFAULT, HozottIgazolt INT, HozottIgazolatlan INT)
INSERT INTO #HozottMulasztas (OsztalyId_TanuloID, HozottIgazolt, HozottIgazolatlan)
SELECT
CAST(o.ID AS NVARCHAR) + '_' + CAST(tcs.C_TANULOID AS NVARCHAR)
,SUM(IIF( tcs.C_BELEPESDATUM < @idoszakVege,ISNULL(tta.C_HOZOTTIGAZOLTHIANYZAS,0),0))
,SUM(IIF( tcs.C_BELEPESDATUM < @idoszakVege,ISNULL(tta.C_HOZOTTIGAZOLATLANHIANYZAS,0),0))
FROM T_OSZTALY_OSSZES o
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID= o.ID AND ocs.TOROLT = 'F'
LEFT JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND ocs.C_TANEVID = @pTanevId AND tcs.TOROLT = 'F'
INNER JOIN T_TANULOTANUGYIADATOK tta ON tta.C_TANULOCSOPORTID = tcs.ID AND tta.C_TANEVID = @pTanevId AND tta.TOROLT = 'F'
WHERE C_ALTANEVID = @pTanevId AND o.TOROLT = 'F'
GROUP BY tcs.C_TANULOID, o.ID
INSERT INTO #szurtMulasztas (TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, C_GYAKORLATI, KESESPERC, MULASZTASOK_SZAMA)
SELECT TIPUS_CHAR, TIPUS, IGAZOLT, CAST(@oid AS NVARCHAR) + '_' + CAST(TanuloMulasztas.TANULOID AS NVARCHAR), GYAKORLATI, SUM(KESESPERC), SUM(MULASZTASOK_SZAMA)
FROM #tempMulasztas AS TanuloMulasztas
INNER JOIN fnGetDokumentumOsztalyokCsoportokTanuloi(@pTanevId, @oid, 'T') AS TANULO ON TANULO.TanuloId = TanuloMulasztas.TANULOID
WHERE TANULO.BelepesDatum <= DATUM
AND (TANULO.KilepesDatum IS NULL OR TANULO.KilepesDatum >= DATUM)
AND (IIF(@pAtsoroltTanuloAdatok > 0, 1, 0) = 1 OR (OSZTALYCSOPORTID IN (SELECT ID FROM fnGetDokumentumKapcsolodoOsztalycsoportok(@oid, @pTanevId, DEFAULT))))
AND (@idoszakEleje IS NULL OR DATUM >= @idoszakEleje)
AND (@idoszakVege IS NULL OR DATUM <= @idoszakVege)
GROUP BY TIPUS_CHAR, TIPUS, IGAZOLT, TanuloMulasztas.TANULOID, GYAKORLATI
IF @pElmeletgyakorlat=0
BEGIN
INSERT INTO #szurtMulasztasRes
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, SUM(KESESPERC) AS KESESPERC, SUM(KESESPERC)/45 AS KESESORA, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, 'F'
FROM #szurtMulasztas
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID
ORDER BY TANULOID, C_TIPUS DESC, C_IGAZOLT DESC;
INSERT INTO #szurtMulasztasOsszesRes
SELECT C_IGAZOLT, TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, 'F'
FROM (
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, SUM(KESESPERC)/45 AS MULASZTASOK_SZAMA
FROM #szurtMulasztas
WHERE TIPUS_CHAR = 'K'
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID
UNION ALL
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA
FROM #szurtMulasztas
WHERE TIPUS_CHAR = 'H'
GROUP BY TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID
) AS KM
GROUP BY C_IGAZOLT, TANULOID
ORDER BY TANULOID, C_IGAZOLT DESC;
END
ELSE
BEGIN
INSERT INTO #szurtMulasztasRes
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, KESESPERC, KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN 45 ELSE 45 END) AS KESESORA, MULASZTASOK_SZAMA, C_GYAKORLATI
FROM #szurtMulasztas
ORDER BY TANULOID, C_TIPUS DESC, C_IGAZOLT DESC;
INSERT INTO #szurtMulasztasOsszesRes
SELECT C_IGAZOLT, TANULOID, SUM(MULASZTASOK_SZAMA) AS MULASZTASOK_SZAMA, C_GYAKORLATI
FROM (
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, KESESPERC/(CASE WHEN C_GYAKORLATI = 'T' THEN 45 ELSE 45 END) AS MULASZTASOK_SZAMA, C_GYAKORLATI
FROM #szurtMulasztas
WHERE TIPUS_CHAR = 'K'
UNION ALL
SELECT TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, MULASZTASOK_SZAMA, C_GYAKORLATI
FROM #szurtMulasztas
WHERE TIPUS_CHAR = 'H'
) AS KM
GROUP BY C_IGAZOLT, TANULOID, C_GYAKORLATI
ORDER BY TANULOID, C_IGAZOLT DESC;
END
FETCH NEXT FROM osztaly_cursor
INTO @oid, @onev, @okf, @ovegz
END
CLOSE osztaly_cursor;
DEALLOCATE osztaly_cursor;
UPDATE szm SET MULASZTASOK_SZAMA = ISNULL(MULASZTASOK_SZAMA,0) +
IIF(szm.TIPUS_CHAR = 'H' AND szm.C_IGAZOLT = 'T' AND szm.C_GYAKORLATI = 'F',hm.HozottIgazolt, IIF(szm.TIPUS_CHAR = 'H' AND szm.C_IGAZOLT = 'F' AND szm.C_GYAKORLATI = 'F',hm.HozottIgazolatlan,0))
FROM #szurtMulasztasRes szm LEFT JOIN #HozottMulasztas hm ON hm.OsztalyId_TanuloID = szm.TANULOID
INSERT INTO #szurtMulasztasRes (TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, MULASZTASOK_SZAMA, C_GYAKORLATI)
SELECT 'H',@pMulasztasTipusIdHianyzas, 'T', hm.OsztalyId_TanuloID, hm.HozottIgazolt, 'F' FROM #HozottMulasztas hm
LEFT JOIN #szurtMulasztasRes szm ON szm.TANULOID = hm.OsztalyId_TanuloID
WHERE szm.TANULOID IS NULL AND hm.OsztalyId_TanuloID IS NOT NULL
INSERT INTO #szurtMulasztasRes (TIPUS_CHAR, C_TIPUS, C_IGAZOLT, TANULOID, MULASZTASOK_SZAMA, C_GYAKORLATI)
SELECT 'H',@pMulasztasTipusIdHianyzas, 'F', hm.OsztalyId_TanuloID, hm.HozottIgazolatlan, 'F' FROM #HozottMulasztas hm
LEFT JOIN #szurtMulasztasRes szm ON szm.TANULOID = hm.OsztalyId_TanuloID
WHERE (szm.TANULOID IS NULL OR NOT EXISTS (SELECT TOP 1 TANULOID FROM #szurtMulasztasRes szm2 WHERE szm2.TANULOID = hm.OsztalyId_TanuloID AND szm2.C_IGAZOLT='F' AND szm2.TIPUS_CHAR = 'H' AND szm2.C_GYAKORLATI = 'F') ) AND hm.OsztalyId_TanuloID IS NOT NULL
DROP TABLE IF EXISTS #OsztalyHozottMulasztas
SELECT DISTINCT TANULOID, TANULONEV, OKTATASIAZONOSITO, OSZTALYNEV, FORMAT(BELEPESDATUM, 'yyyy.MM.dd', 'hu-HU') + ' - ' + ISNULL (FORMAT(KILEPESDATUM, 'yyyy.MM.dd', 'hu-HU'), '') AS BESOROLASA, OSZTALYID
FROM #osztalyTanulok
ORDER BY OSZTALYNEV, TANULONEV;
SELECT DISTINCT TANTARGYID, TANTARGY_NEV, TARGYKATEGORIA_SORSZAM
FROM #tantargyak
ORDER BY TARGYKATEGORIA_SORSZAM, TANTARGY_NEV;
SELECT * FROM #szurtErtekeles
SELECT * FROM #szurtMagszorg
SELECT * FROM #szurtMulasztasRes
SELECT * FROM #szurtMulasztasOsszesRes
SELECT TANULOID, [D] AS Dicseret, [K] AS Kituno
FROM (
SELECT TANULOID, T_TANULOERTEKELES_ID, LEFT(ERTEKELES_SZOVEG_MEGJEGYZES, 1) AS Szoveg
FROM #szurtErtekeles
WHERE
ERTEKELES = '5'
AND LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(ERTEKELES_SZOVEG_MEGJEGYZES,CHAR(160),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 TANULOID
DROP TABLE IF EXISTS #tempOsztalyErtekelesek;
DROP TABLE IF EXISTS #tempMulasztas;
END
GO

View File

@@ -0,0 +1,157 @@
DROP PROCEDURE IF EXISTS uspGetNemNaplozottOrakSzama
GO
CREATE PROCEDURE uspGetNemNaplozottOrakSzama
@pTanevId INT
,@pIntezmenyId INT
AS
BEGIN
SET NOCOUNT ON
CREATE TABLE #OsztalyCsoportok (
Id INT
,IsVegzos CHAR(1)
,IdoszakKezdete DATETIME
,IdoszakVege DATETIME
,IsAlapkepzeses char(1)
,INDEX IX1 CLUSTERED(Id, IdoszakKezdete, IdoszakVege)
)
CREATE TABLE #NaptariNapok (
Datum DATETIME
,HetirendId INT
,HetNapjaId INT
,OsztalyCsoportId INT
,CsengetesiRendId INT
,IsEgyediNap CHAR(1) COLLATE DATABASE_DEFAULT
,PRIMARY KEY CLUSTERED (OsztalyCsoportId, Datum, HetNapjaId, HetirendId)
)
DECLARE
@IdoszakKezdete DATETIME
,@IdoszakVege DATETIME = GETDATE()
,@VegzosUtolsoTanitasiNap DATETIME
SELECT
@IdoszakKezdete = tv.C_ELSOTANITASINAP
FROM T_TANEV_OSSZES tv WHERE ID = @pTanevId
SELECT
@VegzosUtolsoTanitasiNap = MIN(C_DATUM)
FROM T_TANEVRENDJE_OSSZES
WHERE TOROLT = 'F' AND C_TANEVID = @pTanevId AND C_NAPTIPUSA IN (1402, 7600, 7601, 7602, 7603, 1395) AND C_OSSZESCSOPORTRAVONATKOZIK = 'T'
INSERT INTO #OsztalyCsoportok (
Id
,IsVegzos
,IdoszakKezdete
,IdoszakVege
,IsAlapkepzeses
)
SELECT
ID As Id
,C_VEGZOSEVFOLYAM AS IsVegzos
,@IdoszakKezdete AS IdoszakKezdete
,IIF(C_VEGZOSEVFOLYAM = 'T' AND @VegzosUtolsoTanitasiNap IS NOT NULL AND @IdoszakVege > @VegzosUtolsoTanitasiNap, @VegzosUtolsoTanitasiNap + 1, @IdoszakVege) AS IdoszakVege
,IIF(C_FELADATKATEGORIAID = 7553, 'T', 'F')
FROM T_OSZTALYCSOPORT_OSSZES
WHERE TOROLT = 'F' AND C_TANEVID = @pTanevId
UPDATE ocs
SET
ocs.IdoszakVege = NewVegeDatum
FROM #OsztalyCsoportok ocs
INNER JOIN (
SELECT
MIN(tr.C_DATUM) + 1 AS NewVegeDatum
,ocstr.C_OSZTALYCSOPORTID
FROM T_TANEVRENDJE_OSSZES tr
INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON ocstr.C_TANEVRENDJEID = tr.ID
WHERE tr.C_OSSZESCSOPORTRAVONATKOZIK = 'F' AND tr.C_NAPTIPUSA IN (1402, 7600, 7601, 7602, 7603) AND tr.TOROLT = 'F' AND tr.C_TANEVID = @pTanevId
GROUP BY ocstr.C_OSZTALYCSOPORTID
) x ON x.C_OSZTALYCSOPORTID = ocs.Id
WHERE ocs.IsVegzos = 'T'
INSERT INTO #NaptariNapok (
Datum
,HetirendId
,HetNapjaId
,OsztalyCsoportId
,CsengetesiRendId
,IsEgyediNap
)
SELECT
nn.Datum
,ISNULL(tr.HetirendId, nn.HetirendId) AS HetirendId
,ISNULL(tr.HetNapjaId, nn.HetNapjaId) AS HetNapjaId
,nn.OsztalyCsoportId
,ISNULL(tr.CsengetesiRendId, nn.CsengetesiRendId) AS CsengetesiRendId
,COALESCE(tr.IsEgyediNap, nn.IsEgyediNap, 'F')
FROM (
SELECT
nn.C_NAPDATUMA AS Datum
,nn.C_HETIREND AS HetirendId
,nn.C_HETNAPJA AS HetNapjaId
,nn.C_ORARENDINAP AS OrarendiNap
,ocs.ID AS OsztalyCsoportId
,tr.C_CSENGETESIRENDID AS CsengetesiRendId
,tr.C_EGYEDINAP AS IsEgyediNap
,ocs.IsAlapkepzeses
FROM T_NAPTARINAP_OSSZES nn
INNER JOIN #OsztalyCsoportok ocs ON ocs.IdoszakKezdete <= nn.C_NAPDATUMA AND ocs.IdoszakVege > nn.C_NAPDATUMA
LEFT JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND nn.C_INTEZMENYID = tr.C_INTEZMENYID AND nn.C_TANEVID = tr.C_TANEVID AND tr.TOROLT = 'F' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = 'T'
WHERE nn.TOROLT = 'F' AND nn.C_INTEZMENYID = @pIntezmenyId AND nn.C_TANEVID = @pTanevId
) nn
LEFT JOIN (
SELECT
nn.C_NAPDATUMA AS Datum
,tr.C_HETIREND AS HetirendId
,tr.C_HETNAPJA AS HetNapjaId
,tr.C_ORARENDINAP AS OrarendiNap
,ocstr.C_OSZTALYCSOPORTID AS OsztalyCsoportId
,tr.C_CSENGETESIRENDID AS CsengetesiRendId
,tr.C_EGYEDINAP AS IsEgyediNap
,ocs.IsAlapkepzeses
FROM T_NAPTARINAP_OSSZES nn
INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.C_DATUM = nn.C_NAPDATUMA AND nn.C_INTEZMENYID = tr.C_INTEZMENYID AND nn.C_TANEVID = tr.C_TANEVID AND tr.TOROLT = 'F' AND tr.C_OSSZESCSOPORTRAVONATKOZIK = 'F'
INNER JOIN T_OSZTALYCSOPORT_TANEVRENDJE ocstr ON tr.ID = ocstr.C_TANEVRENDJEID
INNER JOIN #OsztalyCsoportok ocs ON ocs.Id = ocstr.C_OSZTALYCSOPORTID AND ocs.IdoszakKezdete <= nn.C_NAPDATUMA AND ocs.IdoszakVege > nn.C_NAPDATUMA
WHERE nn.TOROLT = 'F' AND nn.C_INTEZMENYID = @pIntezmenyId AND nn.C_TANEVID = @pTanevId AND nn.C_NAPDATUMA >= @IdoszakKezdete AND nn.C_NAPDATUMA < ocs.IdoszakVege
) tr ON nn.Datum = tr.datum AND nn.OsztalyCsoportId = tr.OsztalyCsoportId
WHERE (ISNULL(tr.OrarendiNap, nn.OrarendiNap) = 'T' OR ISNULL(tr.IsAlapkepzeses, nn.IsAlapkepzeses) = 'F')
SELECT
ora.Tanar
,ora.TanarOktAzon
,ora.Honap
,COUNT(*) AS Darab
FROM (
SELECT
COALESCE(helyettes.C_NYOMTATASINEV, tanar.C_NYOMTATASINEV) AS Tanar
,tanar.C_OKTATASIAZONOSITO AS TanarOktAzon
,FORMAT(nn.Datum, 'MM') AS Honap
,nn.Datum
-- egy napon lehet t<>bb <20>ra
,oo.C_ORASZAM
-- egy <20>r<EFBFBD>ban lehet t<>bb csoportnak <20>ra
,oo.C_OSZTALYCSOPORTID
FROM T_ORARENDIORA_OSSZES oo
INNER JOIN #OsztalyCsoportok ocs ON ocs.ID = oo.C_OSZTALYCSOPORTID
INNER JOIN #NaptariNapok nn ON nn.HetnapjaId = oo.C_HETNAPJA AND ocs.ID = nn.OsztalyCsoportId AND nn.Datum >= oo.C_ORAERVENYESSEGKEZDETE
AND ((nn.Datum < oo.C_ORAERVENYESSEGVEGE) OR (oo.C_ORAERVENYESSEGKEZDETE = oo.C_ORAERVENYESSEGVEGE AND nn.Datum = oo.C_ORAERVENYESSEGKEZDETE))
AND (oo.C_HETIREND = 1554 OR nn.HetirendId = oo.C_HETIREND) AND oo.C_EGYEDINAP = nn.IsEgyediNap
LEFT JOIN T_FELHASZNALO_OSSZES tanar ON tanar.ID = oo.C_TANARID AND tanar.C_TANEVID = oo.C_TANEVID AND tanar.TOROLT = 'F'
LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hisz ON oo.ID = hisz.C_HELYETTESITETTORARENDID AND hisz.C_HELYETTESITESNAPJA = nn.Datum AND hisz.C_TANEVID = oo.C_TANEVID AND hisz.TOROLT = 'F'
LEFT JOIN T_FELHASZNALO_OSSZES helyettes ON hisz.C_HELYETTESTANAROKID = helyettes.ID AND helyettes.C_TANEVID = oo.C_TANEVID AND helyettes.TOROLT = 'F'
LEFT JOIN T_CSENGETESIRENDORA_OSSZES csro ON csro.C_CSENGETESIRENDID = ISNULL(nn.CsengetesiRendId, oo.C_CSENGETESIRENDID) AND csro.C_ORASZAM = oo.C_ORASZAM AND csro.TOROLT = 'F'
LEFT JOIN T_TANITASIORA_OSSZES tt ON tt.C_DATUM = nn.Datum AND tt.C_HETNAPJA = oo.C_HETNAPJA AND ((tt.C_CSENGETESIRENDID IS NULL AND tt.C_ORAKEZDETE = (nn.Datum + oo.C_ORAKEZDETE)
AND tt.C_ORAVEGE = (nn.Datum + oo.C_ORAVEGE)) OR (tt.C_CSENGETESIRENDID IS NOT NULL AND tt.C_ORASZAM = oo.C_ORASZAM)) AND tt.C_OSZTALYCSOPORTID = oo.C_OSZTALYCSOPORTID
AND tt.C_TANTARGYID = oo.C_TANTARGYID AND tt.C_TANARID = oo.C_TANARID
WHERE oo.TOROLT = 'F' AND oo.C_TANEVID = @pTanevId AND (nn.Datum + oo.C_ORAKEZDETE) <= @IdoszakVege AND (nn.Datum + oo.C_ORAVEGE) >= @IdoszakKezdete
AND ((oo.C_CSENGETESIRENDID IS NOT NULL AND csro.C_CSENGETESIRENDID IS NOT NULL) OR (oo.C_CSENGETESIRENDID IS NULL AND csro.C_CSENGETESIRENDID IS NULL)) AND tt.ID IS NULL
) ora
GROUP BY ora.Tanar, ora.TanarOktAzon, ora.Honap
END
GO

View File

@@ -0,0 +1,215 @@
DROP PROCEDURE IF EXISTS uspGetNemNaplozottOrarendiOrak
GO
CREATE PROCEDURE uspGetNemNaplozottOrarendiOrak
@IntezmenyId int
,@TanevId int
,@IdoszakKezdete datetime
,@IdoszakVege datetime
,@TanarId int = NULL
,@OsztalyCsoportId int = NULL
,@TantargyId int = NULL
,@CsakHelyettesitesreKiirtTanorak bit = 0
,@pFeladatKategoriaId int = NULL
AS BEGIN
SET NOCOUNT ON;
SET DATEFIRST 1;
DECLARE
@CsakOrarendiOrak bit = 0
CREATE TABLE #OrarendiOrak (
Id int
,ORARENDIID int
,Datum datetime
,Bontott char (1)
,Hetirend int
,HetNapja int
,HetSorszam int
,ErvenyessegKezdete datetime
,ErvenyessegVege datetime
,OraKezdete datetime
,OraVege datetime
,Oraszam int
,TargyNev nvarchar (300)
,TargyNevForMobile nvarchar (300)
,TargykategoriaID int
,Megtartott char (1)
,CsengetesiRendOraID int
,CsengetesiRendID int
,MaxNapiOraszam int
,OsztalyNev nvarchar (255)
,TanevRendOsztalyCsoportId int
,MegjelenesOka nvarchar (300)
,TanarNev nvarchar (255)
,TeremNev nvarchar (255)
,TeremId int
,OraTipus nvarchar (200)
,Hianyzas char (1)
,Keses char (1)
,Ures char (1)
,HelyettesitoTanarID int
,HelyettesitoTanarNev nvarchar (255)
,HelyettesitesId int
,TanarID int
,AdminAltalKiirt char (1)
,GroupId int
,Tema nvarchar (max)
,TantargyId int
,OsztCsopId int
,INDEX IX1 CLUSTERED(Datum, HetNapja, Oraszam, TanevRendOsztalyCsoportId, TantargyId, TanarID)
)
INSERT INTO #OrarendiOrak (
Id
,ORARENDIID
,Datum
,Bontott
,Hetirend
,HetNapja
,HetSorszam
,ErvenyessegKezdete
,ErvenyessegVege
,OraKezdete
,OraVege
,Oraszam
,TargyNev
,TargyNevForMobile
,TargykategoriaID
,Megtartott
,CsengetesiRendOraID
,CsengetesiRendID
,MaxNapiOraszam
,OsztalyNev
,TanevRendOsztalyCsoportId
,MegjelenesOka
,TanarNev
,TeremNev
,TeremId
,OraTipus
,Hianyzas
,Keses
,Ures
,HelyettesitoTanarID
,HelyettesitoTanarNev
,HelyettesitesId
,TanarID
,AdminAltalKiirt
,GroupId
,Tema
,TantargyId
,OsztCsopId
)
EXEC sp_GetOrarend
@pIntezmenyId = @IntezmenyId
,@pTanevId = @TanevId
,@pIdoszakKezdete = @IdoszakKezdete
,@pIdoszakVege = @IdoszakVege
,@pTanarId = @TanarId
,@pIsHelyettesitesNelkul = 0
,@pOsztalyCsoportId = NULL
,@pTanuloId = NULL
,@pTantargyId = NULL
,@pTeremId = NULL
,@pCsakOrarendiOrak = 0
,@pIsNapirend = NULL
,@pFeladatKategoriaId = @pFeladatKategoriaId
SELECT
orak.Id
,orak.ORARENDIID
,orak.Bontott
,orak.Hetirend
,orak.HetNapja
,orak.HetSorszam
,orak.ErvenyessegKezdete
,orak.ErvenyessegVege
,orak.OraKezdete
,CONVERT(date, orak.OraKezdete) AS OraKezdeteDate
,CONVERT(varchar (5), orak.OraKezdete, 108) AS OraKezdeteTimeText
,orak.OraVege
,IIF(orak.CsengetesiRendID IS NOT NULL, orak.Oraszam, NULL) AS Oraszam
,orak.TargyNev
,orak.TargyNevForMobile
,orak.TargykategoriaID
,orak.Megtartott
,orak.CsengetesiRendOraID
,orak.CsengetesiRendID
,orak.MaxNapiOraszam
,orak.OsztalyNev
,orak.MegjelenesOka
,orak.TanarNev
,f.C_OKTATASIAZONOSITO TanarOktAzon
,orak.TeremNev
,orak.OraTipus
,orak.Hianyzas
,orak.Keses
,orak.Ures
,orak.HelyettesitoTanarID
,orak.HelyettesitoTanarNev
,orak.HelyettesitesId
,orak.TanarID
,orak.AdminAltalKiirt
,orak.GroupId
,orak.Tema
,orak.TantargyId
,orak.OsztCsopId
,IIF(orak.HelyettesitoTanarID IS NOT NULL, orak.TanarNev, NULL) AS HelyettesitettPedagogusNev
,CONVERT(nvarchar (25), orak.OraKezdete, 102) AS OraKezdeteDateST
,DATEPART(w, orak.OraKezdete) + 1407 AS HetNapjaValos
FROM #OrarendiOrak orak
INNER JOIN T_FELHASZNALO_OSSZES f ON orak.TanarID = f.ID
AND f.TOROLT ='F'
AND f.C_TANEVID = @TanevId
WHERE orak.OraTipus = 'OrarendiOra'
AND orak.OraKezdete <= @IdoszakVege
AND orak.OraVege >= @IdoszakKezdete
AND (@CsakHelyettesitesreKiirtTanorak = 0 OR orak.HelyettesitoTanarNev IS NOT NULL)
-- Iktatás adatok
SELECT
@OsztalyCsoportId AS OsztalyId
,ocs.C_EVFOLYAMTIPUSA AS Evfolyam
,ocs.C_FELADATELLATASIHELYID AS FeladatEllatasiHelyId
,o.C_KEPZESIFORMA AS KepzesiForma
,o.C_OSZTALYFONOKID AS OsztalyFonokId
,o.C_TANTERVID AS TantervId
,o.C_SZAKMACSOPORT AS SzakmaCsoport
,o.C_AGAZAT AS Agazat
,o.C_SZAKKEPESITES AS Szakkepesites
,o.C_RESZSZAKKEPESITES AS Reszszakkepesites
,ocs.C_KERESZTFELEVES AS OJCSJKeresztfeleves
,o.C_TECHNIKAIOSZTALY AS OJTechnikaiOsztaly
,o.C_NEMZETISEGI AS OJNemzetisegi
,o.C_KETTANNYELVU AS OJKettannyelvu
,o.C_NYELVIELOKESZITO AS OJNyelviElokeszito
,o.C_LOGOPEDIAI AS OJLogopediai
,o.C_SPORT AS OJSportOsztaly
,o.C_AJPROGRAM AS OJAranyJanosProgram
,o.C_GYOGYPEDAGOGIAI AS OJGyogypedagogiai
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
AND o.C_ALTANEVID = ocs.C_TANEVID
AND o.C_ALINTEZMENYID = ocs.C_INTEZMENYID
WHERE ocs.ID = @OsztalyCsoportId
AND ocs.TOROLT = 'F'
AND ocs.C_TANEVID = @TanevId
AND ocs.C_INTEZMENYID = @IntezmenyId
-- Tanár iktatás adatok
SELECT DISTINCT
f.ID AS TanarId
,f.C_OKTATASIAZONOSITO AS TanarOktAzon
FROM T_ALKALMAZOTT_OSSZES a
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = a.ID AND f.TOROLT = 'F'
AND a.C_ALTANEVID = f.C_TANEVID
AND a.C_ALINTEZMENYID = f.C_INTEZMENYID
LEFT JOIN #OrarendiOrak orak ON orak.TanarID = f.ID
WHERE a.TOROLT = 'F'
AND a.C_ALINTEZMENYID = @IntezmenyId
AND a.C_ALTANEVID = @TanevId
AND (@TanarId IS NULL OR f.ID = @TanarId)
END
GO

View File

@@ -0,0 +1,202 @@
-- =============================================
-- Description: Lekérdezzük a részletes hiányzási adatokat egy osztályra nézve.
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
DROP PROCEDURE IF EXISTS uspGetTanulokMulasztasaiKeseseiReszletes
GO
CREATE PROCEDURE uspGetTanulokMulasztasaiKeseseiReszletes
@intezmenyId INT,
@tanevId INT,
@osztalyId INT,
@elmeletGyakorlat BIT
AS
BEGIN
SET NOCOUNT ON;
DECLARE
@elmeletiOraPercben INT = 45
,@gyakorlatiOraPercben INT = 45
,@osztalyNev NVARCHAR(200)
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
,dbo.fnGetDokumentumIntezmenyCime(@tanevId) IntezmenyCime
,i.C_OMKOD IntezmenyOMKod
FROM T_OSZTALYCSOPORT_OSSZES ocs
INNER JOIN T_OSZTALY_OSSZES o ON ocs.ID = o.ID
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
WHERE
o.TOROLT = 'F'
AND i.TOROLT = 'F'
AND ofo.TOROLT = 'F'
AND ocs.ID = @osztalyId
AND ocs.C_TANEVID = @tanevId
SELECT
@osztalyNev = C_NEV
FROM
T_OSZTALYCSOPORT_OSSZES ocs
WHERE
ID = @osztalyId
AND ocs.TOROLT = 'F'
AND ocs.C_TANEVID = @tanevId
DECLARE @sql NVARCHAR(MAX) = ''
SET @sql +=
'SELECT
tcs.C_TANULOID TanuloId
,C_SZULETESINEV TanuloNev
,C_OKTATASIAZONOSITO TanuloOktAzon
,@osztalyNev OsztalyNev
,@osztalyId OsztalyId'
IF @elmeletgyakorlat = 1
BEGIN
SET @sql +=
',SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''T'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazolandoGyakorlati
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazoltGyakorlati
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazolatlanGyakorlati
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''F'' AND Gyakorlati = ''T'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolandoGyakorlati
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''F'' AND Gyakorlati = ''T'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazoltGyakorlati
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''F'' AND Gyakorlati = ''T'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolatlanGyakorlati
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolandoGyakorlati
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazoltGyakorlati
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolatlanGyakorlati
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazolandoGyakorlatiPerc
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazoltGyakorlatiPerc
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazolatlanGyakorlatiPerc
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@gyakorlatiOraPercben SzamitottKesesIgazolandoGyakorlati
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@gyakorlatiOraPercben SzamitottKesesIgazoltGyakorlati
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@gyakorlatiOraPercben SzamitottKesesIgazolatlanGyakorlati'
SET @sql +=
',SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''F'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazolandoElmeleti
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazoltElmeleti
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazolatlanElmeleti
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''F'' AND Gyakorlati = ''F'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolandoElmeleti
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''F'' AND Gyakorlati = ''F'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazoltElmeleti
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''F'' AND Gyakorlati = ''F'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolatlanElmeleti
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolandoElmeleti
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazoltElmeleti
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolatlanElmeleti
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazolandoElmeletiPerc
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazoltElmeletiPerc
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazolatlanElmeletiPerc
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@elmeletiOraPercben SzamitottKesesIgazolandoElmeleti
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@elmeletiOraPercben SzamitottKesesIgazoltElmeleti
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@elmeletiOraPercben SzamitottKesesIgazolatlanElmeleti'
END
ELSE
BEGIN
SET @sql +=
',SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' THEN 1 ELSE 0 END) TanoraiHianyzasIgazolando
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' THEN 1 ELSE 0 END) + ISNULL(h.[hozottIgazoltHianyzas], 0) TanoraiHianyzasIgazolt
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' THEN 1 ELSE 0 END) + ISNULL(h.[hozottIgazolatlanHianyzas], 0) TanoraiHianyzasIgazolatlan
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''F'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolando
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''F'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolt
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''F'' THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolatlan
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolando
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolt
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND KesesPercben IS NOT NULL THEN 1 ELSE 0 END) TanoraiKesesDarabszamIgazolatlan
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazolandoPerc
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazoltPerc
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END) TanoraiKesesIgazolatlanPerc
,(SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@gyakorlatiOraPercben)
+ (SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@elmeletiOraPercben) SzamitottKesesIgazolando
,(SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@gyakorlatiOraPercben)
+ (SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@elmeletiOraPercben) SzamitottKesesIgazolt
,(SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@gyakorlatiOraPercben)
+ SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NOT NULL THEN KesesPercben ELSE 0 END)/@elmeletiOraPercben SzamitottKesesIgazolatlan
'
END
SET @sql +=
',ISNULL(h.[hozottIgazolatlanHianyzas], 0) HozottIgazolatlanHianyzas
,ISNULL(h.[hozottIgazolatlanKesesPerc], 0) HozottIgazolatlanKesesPerc
,ISNULL(h.[hozottIgazoltHianyzas], 0) HozottIgazoltHianyzas
,ISNULL(h.[hozottIgazoltHianyzasPerc], 0) HozottIgazoltHianyzasPerc
,SUM(CASE IgazolasTipusa WHEN 1530 THEN 1 ELSE 0 END) OrvosiIgazolas
,SUM(CASE IgazolasTipusa WHEN 1531 THEN 1 ELSE 0 END) SzuloiIgazolas
,SUM(CASE IgazolasTipusa WHEN 1532 THEN 1 ELSE 0 END) HivatalosTavolletIgazolas
,SUM(CASE IgazolasTipusa WHEN 1533 THEN 1 ELSE 0 END) IskolaerdekuTavolletIgazolas
,SUM(CASE IgazolasTipusa WHEN 6494 THEN 1 ELSE 0 END) SzolgaltatoiIgazolas
,SUM(CASE IgazolasTipusa WHEN 6495 THEN 1 ELSE 0 END) IskolaiEngedelyIgazolas
,SUM(CASE IgazolasTipusa WHEN 6967 THEN 1 ELSE 0 END) PalyavalasztasiCeluIgazolas
,SUM(CASE IgazolasTipusa WHEN 6834 THEN 1 ELSE 0 END) KikeroIgazolas
,SUM(CASE IgazolasTipusa WHEN 6853 THEN 1 ELSE 0 END) TappenzIgazolas
,SUM(CASE IgazolasTipusa WHEN 1529 THEN 1 ELSE 0 END) EgyebIgazolas
FROM dbo.fnGetDokumentumMulasztasokOsztalyonkentReszletes(@tanevId, @osztalyId, @intezmenyId, DEFAULT, 0, DEFAULT, DEFAULT, 0) TanulokMulasztasai
INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = TanulokMulasztasai.TantargyId
LEFT JOIN (
SELECT
C_TANULOID tanuloId
,[C_HOZOTTIGAZOLATLANHIANYZAS] hozottIgazolatlanHianyzas
,[C_HOZOTTIGAZOLATLANKESESPERCBE] hozottIgazolatlanKesesPerc
,[C_HOZOTTIGAZOLTHIANYZAS] hozottIgazoltHianyzas
,[C_HOZOTTIGAZOLTKESESPERCBEN] hozottIgazoltHianyzasPerc
FROM
T_TANULOTANUGYIADATOK_OSSZES ta
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = ta.C_TANULOCSOPORTID
WHERE
tcs.TOROLT = ''F''
AND ta.TOROLT = ''F''
AND ta.C_TANEVID = @tanevId
) h ON h.tanuloId = TanulokMulasztasai.TanuloId
RIGHT OUTER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = TanulokMulasztasai.TanuloId
INNER JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID
WHERE
tcs.C_TANEVID = @tanevId
AND tcs.C_OSZTALYCSOPORTID = @osztalyId
AND Tantargy.TOROLT = ''F''
AND tcs.TOROLT = ''F''
AND f.TOROLT = ''F''
GROUP BY
TanulokMulasztasai.TanuloId
,tcs.C_TANULOID
,C_SZULETESINEV
,C_OKTATASIAZONOSITO
,ISNULL(h.[hozottIgazolatlanHianyzas], 0)
,ISNULL(h.[hozottIgazolatlanKesesPerc], 0)
,ISNULL(h.[hozottIgazoltHianyzas], 0)
,ISNULL(h.[hozottIgazoltHianyzasPerc], 0)
ORDER BY C_SZULETESINEV'
EXEC sp_executesql @sql, N'
@intezmenyId INT
,@tanevId INT
,@osztalyId INT
,@elmeletiOraPercben INT
,@gyakorlatiOraPercben INT
,@osztalyNev NVARCHAR(200)'
,@intezmenyId = @intezmenyId
,@tanevId = @tanevId
,@osztalyId = @osztalyId
,@elmeletiOraPercben = @elmeletiOraPercben
,@gyakorlatiOraPercben = @gyakorlatiOraPercben
,@osztalyNev = @osztalyNev
END
GO