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

201 lines
13 KiB
Transact-SQL

-- =============================================
-- Description: Lekérdezzük a részletes hiányzási adatokat egy osztályra nézve.
-- =============================================
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 AND ofo.TOROLT = 'F'
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 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_NYOMTATASINEV 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'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoraiHianyzasIgazolandoGyakorlati
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoraiHianyzasIgazoltGyakorlati
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''T'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoraiHianyzasIgazolatlanGyakorlati
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''F'' AND Gyakorlati = ''T'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolandoGyakorlati
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''F'' AND Gyakorlati = ''T'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazoltGyakorlati
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''F'' AND Gyakorlati = ''T'' AND KesesPercben IS NULL 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'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoraiHianyzasIgazolandoElmeleti
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoraiHianyzasIgazoltElmeleti
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND Gyakorlati = ''F'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoraiHianyzasIgazolatlanElmeleti
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''F'' AND Gyakorlati = ''F'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolandoElmeleti
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''F'' AND Gyakorlati = ''F'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazoltElmeleti
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''F'' AND Gyakorlati = ''F'' AND KesesPercben IS NULL 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'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoraiHianyzasIgazolando
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''T'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) + ISNULL(h.[hozottIgazoltHianyzas], 0) TanoraiHianyzasIgazolt
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''T'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) + ISNULL(h.[hozottIgazolatlanHianyzas], 0) TanoraiHianyzasIgazolatlan
,SUM(CASE WHEN Igazolt IS NULL AND Tanorai = ''F'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolando
,SUM(CASE WHEN Igazolt =''T'' AND Tanorai = ''F'' AND KesesPercben IS NULL THEN 1 ELSE 0 END) TanoranKivuliHianyzasIgazolt
,SUM(CASE WHEN Igazolt =''F'' AND Tanorai = ''F'' AND KesesPercben IS NULL 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 8830 THEN 1 ELSE 0 END) HatosagiHaziKaranten
,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
,tcs.C_BELEPESDATUM
,tcs.C_KILEPESDATUM
FROM
T_TANULOTANUGYIADATOK_OSSZES ta
INNER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.ID = ta.C_TANULOCSOPORTID AND tcs.C_OSZTALYCSOPORTID = @osztalyId
WHERE
tcs.TOROLT = ''F''
AND ta.TOROLT = ''F''
AND ta.C_TANEVID = @tanevId
) h ON h.tanuloId = TanulokMulasztasai.TanuloId AND (h.C_BELEPESDATUM <= TanulokMulasztasai.Datum AND (h.C_KILEPESDATUM IS NULL OR h.C_KILEPESDATUM > TanulokMulasztasai.Datum))
RIGHT OUTER JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_TANULOID = TanulokMulasztasai.TanuloId
AND (tcs.C_BELEPESDATUM <= TanulokMulasztasai.Datum AND (tcs.C_KILEPESDATUM IS NULL OR tcs.C_KILEPESDATUM > TanulokMulasztasai.Datum))
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_NYOMTATASINEV
,C_OKTATASIAZONOSITO
,ISNULL(h.[hozottIgazolatlanHianyzas], 0)
,ISNULL(h.[hozottIgazolatlanKesesPerc], 0)
,ISNULL(h.[hozottIgazoltHianyzas], 0)
,ISNULL(h.[hozottIgazoltHianyzasPerc], 0)
ORDER BY C_NYOMTATASINEV'
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