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

139 lines
No EOL
5.8 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS [dbo].[sp_GetTanulokMulasztasokReszletezese]
GO
CREATE PROCEDURE [dbo].[sp_GetTanulokMulasztasokReszletezese]
@OsztalyId INT,
@TanevId INT
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Diakok TABLE (DiakId INT)
INSERT INTO @Diakok
SELECT
T_FELHASZNALO_OSSZES.ID
FROM T_FELHASZNALO_OSSZES
JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F') TANCSOPORT ON TANCSOPORT.C_TANULOID = T_FELHASZNALO_OSSZES.ID
WHERE T_FELHASZNALO_OSSZES.TOROLT='F'
AND T_FELHASZNALO_OSSZES.C_TANEVID = @TanevId
AND TANCSOPORT.C_OSZTALYCSOPORTID = @OsztalyId
order by T_FELHASZNALO_OSSZES.C_NYOMTATASINEV
DECLARE @Mulasztasok TABLE (MulasztasId INT)
INSERT INTO @Mulasztasok
SELECT ID FROM T_MULASZTASTIPUS_OSSZES
WHERE ID != 1497
AND ID != 1498
AND ID != 1817
AND C_ALTANEVID = @TanevId
DECLARE @tmp TABLE (OSZTALY NVARCHAR(255), INT_NEV NVARCHAR(255), INT_OMKOD int, INT_VAROS NVARCHAR(255)
, INT_CIM NVARCHAR(255), INT_IGAZGATO_NEV NVARCHAR(255), OSZTFO_NEV NVARCHAR(255))
INSERT INTO @tmp
SELECT TOP 1 /*TODO:Tobb Osztaly*//*OM-1607*/
ocs.C_NEV
, i.C_NEV AS INT_NEV
,i.C_OMKOD AS INT_OMKOD
,i.C_VAROS AS INT_VAROS
,dbo.fnGetDokumentumIntezmenyCime(@tanevId) AS INT_CIM
,i.C_IGAZGATONEVE AS INT_IGAZGATO_NEV
,osztf.C_VEZETEKNEV + ' ' + osztf.C_UTONEV AS OSZTFO_NEV
FROM T_OSZTALYCSOPORT_OSSZES ocs
JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.TOROLT = 'F'
JOIN T_FELHASZNALO_OSSZES f ON f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
LEFT OUTER JOIN T_INTEZMENYADATOK_OSSZES i ON i.C_INTEZMENYID = ocs.C_INTEZMENYID AND i.C_TANEVID = ocs.C_TANEVID AND i.TOROLT = 'F'
LEFT OUTER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
LEFT OUTER JOIN T_FELHASZNALO_OSSZES osztf ON osztf.ID = o.C_OSZTALYFONOKID AND osztf.TOROLT = 'F'
where
tcs.C_OSZTALYCSOPORTID = @OsztalyId
AND ocs.C_TANEVID = @TanevId
AND tcs.TOROLT = 'F'
AND ocs.TOROLT = 'F'
declare @TenylegesMulasztasok table (DiakId INT, MulasztasId int, NEV NVARCHAR(255), OSZTALY NVARCHAR(255), DATUM DATETIME
, ORA INT, MULASZTASJELLEG NVARCHAR(255), KESESPERC int, OSZTALYCSOPORT NVARCHAR(255)
, TANTARGY NVARCHAR(255), INT_NEV NVARCHAR(255), INT_OMKOD NVARCHAR(255), INT_VAROS NVARCHAR(255)
, INT_CIM NVARCHAR(255), INT_IGAZGATO_NEV NVARCHAR(255), OSZTFO_NEV NVARCHAR(255))
INSERT INTO @TenylegesMulasztasok
SELECT
f.Id
,tm.C_TIPUS
,f.C_VEZETEKNEV + ' ' + f.C_UTONEV AS NEV
,ocs.C_NEV AS OSZTALY
,tno.C_DATUM AS DATUM
,oo.C_ORASZAM AS ORA
,tm.C_TIPUS as MULASZTASJELLEG
,tm.C_KESESPERCBEN AS KESESPERC
,ocs.C_NEV AS OSZTALYCSOPORT
,tt.C_NEV AS TANTARGY
,i.C_NEV AS INT_NEV
,i.C_OMKOD AS INT_OMKOD
,i.C_VAROS AS INT_VAROS
,dbo.fnGetDokumentumIntezmenyCime(@tanevId) AS INT_CIM
,i.C_IGAZGATONEVE AS INT_IGAZGATO_NEV
,osztf.C_VEZETEKNEV + ' ' + osztf.C_UTONEV AS OSZTFO_NEV
FROM T_OSZTALYCSOPORT_OSSZES ocs
JOIN T_TANULOCSOPORT_OSSZES tcs ON tcs.C_OSZTALYCSOPORTID = ocs.ID AND tcs.TOROLT = 'F'
JOIN T_FELHASZNALO_OSSZES f on f.ID = tcs.C_TANULOID AND f.TOROLT = 'F'
LEFT JOIN T_TANULOMULASZTAS_OSSZES tm ON tm.C_ORATANULOIID = tcs.C_TANULOID and tm.TOROLT = 'F'
LEFT JOIN T_TANITASIORA_OSSZES tno ON tno.ID = tm.C_TANITASIORAKID AND tno.TOROLT = 'F'
LEFT JOIN T_TANTARGY_OSSZES tt ON tt.ID = tno.C_TANTARGYID AND tt.TOROLT = 'F'
LEFT JOIN T_ORARENDIORA_OSSZES oo ON tno.C_ORARENDIORAGROUPID = oo.C_ORARENDIORAGROUPID AND tno.C_DATUM BETWEEN oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE AND oo.TOROLT = 'F'
LEFT OUTER JOIN T_INTEZMENYADATOK_OSSZES i ON i.C_INTEZMENYID = ocs.C_INTEZMENYID AND i.C_TANEVID = ocs.C_TANEVID AND i.TOROLT = 'F'
LEFT OUTER JOIN T_OSZTALY_OSSZES o ON o.ID = ocs.ID AND o.TOROLT = 'F'
LEFT OUTER JOIN T_FELHASZNALO_OSSZES osztf ON osztf.ID = o.C_OSZTALYFONOKID AND osztf.TOROLT = 'F'
WHERE
tcs.C_OSZTALYCSOPORTID = @OsztalyId
AND ocs.C_TANEVID = @TanevId
AND tcs.TOROLT = 'F'
AND ocs.TOROLT = 'F'
DECLARE @tmp2 TABLE (DiakId INT, MulasztasId INT, Cnt INT)
INSERT INTO @tmp2
SELECT
N.DiakId
,O.MulasztasId
,count(*) AS Cnt
FROM @Diakok N
CROSS JOIN @Mulasztasok O
JOIN @TenylegesMulasztasok T ON T.DiakId = N.DiakId AND T.MulasztasId = O.MulasztasId
GROUP BY N.DiakId,O.MulasztasId
SELECT
N.DiakId
,O.MulasztasId
,O.MulasztasId AS Mulasztas
,f.C_VEZETEKNEV + ' ' + f.C_UTONEV AS NEV
,(select OSZTALY FROM @tmp) AS OSZTALY
,DATUM
,ORA
,T.MulasztasId AS MULASZTASJELLEG
,KESESPERC
,OSZTALYCSOPORT
,TANTARGY
,(SELECT INT_NEV FROM @tmp) AS INT_NEV
,(SELECT INT_OMKOD FROM @tmp) AS INT_OMKOD
,(SELECT INT_VAROS FROM @tmp) AS INT_VAROS
,(SELECT INT_CIM FROM @tmp) AS INT_CIM
,(SELECT INT_IGAZGATO_NEV FROM @tmp) AS INT_IGAZGATO_NEV
,(SELECT OSZTFO_NEV FROM @tmp) as OSZTFO_NEV
,isnull(Cntr.Cnt, 0) AS Cntr
,f.C_NYOMTATASINEV + ' ' + cast(N.DiakId as nvarchar) AS GROUPPARAMETER
FROM @Diakok N
CROSS JOIN @Mulasztasok O
LEFT JOIN @TenylegesMulasztasok T ON T.DiakId = N.DiakId AND T.MulasztasId = O.MulasztasId
JOIN T_FELHASZNALO_OSSZES f ON f.ID = N.DiakId AND f.TOROLT = 'F'
LEFT JOIN @tmp2 Cntr ON Cntr.DiakId = N.DiakId AND Cntr.MulasztasId = O.MulasztasId
ORDER BY f.C_NYOMTATASINEV
SELECT C_OSZTALYFONOKID PartnerID FROM T_OSZTALY_OSSZES
WHERE
T_OSZTALY_OSSZES.ID = @OsztalyId
AND T_OSZTALY_OSSZES.TOROLT='F'
AND T_OSZTALY_OSSZES.C_ALTANEVID = @TanevId
END
GO