kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20171127130648_OM_19/sp_GetNemMegtartottOrakSzamaPerHet.sql
2024-03-13 00:33:46 +01:00

147 lines
No EOL
5.7 KiB
Transact-SQL

IF OBJECT_ID('sp_GetNemMegtartottOrakSzamaPerHet') IS NOT NULL
BEGIN
DROP PROCEDURE sp_GetNemMegtartottOrakSzamaPerHet
END
GO
CREATE PROCEDURE [sp_GetNemMegtartottOrakSzamaPerHet]
@osztalyId int,
@intezmenyId int,
@tanevId int
AS
BEGIN
DECLARE @vegzosUtolsoNapDatuma DATE = (SELECT C_DATUM FROM T_TANEVRENDJE_OSSZES WHERE C_TANEVID = @tanevId AND TOROLT = 'F' AND C_NAPTIPUSA = 1402)
DECLARE @vegzosOsztalyokCsoportok TABLE (osztalyId INT)
INSERT INTO @vegzosOsztalyokCsoportok
SELECT ID FROM T_OSZTALYCSOPORT_OSSZES WHERE C_VEGZOSEVFOLYAM = 'T' AND C_TANEVID = @tanevID AND TOROLT = 'F'
DECLARE @OsszesNap TABLE (Datum DATE, Hetirend INT, OrarendiNap NVARCHAR(1), OsztalyCsoportId INT)
INSERT INTO @OsszesNap
SELECT DISTINCT
C_NAPDATUMA
,C_HETIREND
,C_ORARENDINAP
,kapcsolodo.Id
FROM T_NAPTARINAP_OSSZES
CROSS JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) kapcsolodo
WHERE
C_TANEVID = @tanevId
AND TOROLT = 'F'
DECLARE @TanevRendje TABLE (Datum DATE, Hetirend INT, OsztalyCsoportId INT, OrarendiNap NVARCHAR(1))
INSERT INTO @TanevRendje
SELECT
C_DATUM
,C_HETIREND
,kapcsolodo.Id
,C_ORARENDINAP
FROM T_TANEVRENDJE_OSSZES
CROSS JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) kapcsolodo
WHERE
C_TANEVID = @tanevId
AND TOROLT = 'F'
AND C_OSSZESCSOPORTRAVONATKOZIK = 'T'
DECLARE @TanevRendjeOsztalyCsoportonkent TABLE (Datum DATE, Hetirend INT, OsztalyCsoportId INT, OrarendiNap NVARCHAR(1))
INSERT INTO @TanevRendjeOsztalyCsoportonkent
SELECT
C_DATUM
,C_HETIREND
,C_OSZTALYCSOPORTID
,C_ORARENDINAP
FROM T_OSZTALYCSOPORT_TANEVRENDJE ocstr
INNER JOIN T_TANEVRENDJE_OSSZES tr ON tr.ID = ocstr.C_TANEVRENDJEID
INNER JOIN fnGetKapcsolodoOsztalycsoportok(@osztalyId) kapcsolodo ON kapcsolodo.Id = C_OSZTALYCSOPORTID
WHERE
TOROLT = 'F'
DECLARE @OrarendiNapok TABLE (Datum DATE, OsztalyCsoportId INT, Hetirend INT)
INSERT INTO @OrarendiNapok
SELECT
Datum
,OsztalyCsoportId
,Hetirend
FROM
(SELECT
OsszesNap.Datum
,OsszesNap.OsztalyCsoportId
,COALESCE(trocs.OrarendiNap, tr.OrarendiNap, OsszesNap.OrarendiNap) OrarendiNap
,COALESCE(trocs.Hetirend, tr.Hetirend, OsszesNap.Hetirend) Hetirend
FROM @OsszesNap OsszesNap
LEFT JOIN @TanevRendje tr ON tr.Datum = OsszesNap.Datum AND tr.OsztalyCsoportId = OsszesNap.OsztalyCsoportId
LEFT JOIN @TanevRendjeOsztalyCsoportonkent trocs ON trocs.Datum = OsszesNap.Datum AND trocs.OsztalyCsoportId = OsszesNap.OsztalyCsoportId
WHERE
OsszesNap.OrarendiNap = 'T' OR tr.OrarendiNap = 'T' OR trocs.OrarendiNap = 'T'
) a
WHERE OrarendiNap ='T'
SELECT
HetSorszam HetSorszama
,count(ID) NemNaplozottOrakSzama
,@osztalyId OsztalyID
FROM
(
SELECT
Id
,HetSorszam
FROM
(
SELECT DISTINCT
naptar.C_HETSORSZAMA HetSorszam
,oo.Id Id
FROM T_ORARENDIORA_OSSZES oo
INNER JOIN T_NAPTARINAP_OSSZES naptar ON
((naptar.C_NAPDATUMA >=oo.C_ORAERVENYESSEGKEZDETE AND naptar.C_NAPDATUMA < oo.C_ORAERVENYESSEGVEGE)
OR
(naptar.C_NAPDATUMA = oo.C_ORAERVENYESSEGKEZDETE AND naptar.C_NAPDATUMA = oo.C_ORAERVENYESSEGVEGE))
AND oo.C_HETNAPJA=naptar.C_HETNAPJA
AND (naptar.C_NAPTIPUSA NOT IN (1386,1387,1389,1391,1392,1396,1397,1398,1399,1401))
INNER JOIN @OrarendiNapok OrarendiNapok ON OrarendiNapok.OsztalyCsoportId = oo.C_OSZTALYCSOPORTID AND OrarendiNapok.Datum = naptar.C_NAPDATUMA AND (OrarendiNapok.Hetirend = oo.C_HETIREND OR oo.C_HETIREND = 1554)
LEFT JOIN T_TANITASIORA_OSSZES tao ON
naptar.C_NAPDATUMA = tao.C_DATUM
AND tao.C_ORARENDIORAGROUPID = oo.C_ORARENDIORAGROUPID
AND tao.C_DATUM BETWEEN oo.C_ORAERVENYESSEGKEZDETE AND oo.C_ORAERVENYESSEGVEGE
AND tao.TOROLT='F'
LEFT JOIN T_HELYETTESITESIIDOSZAK_OSSZES hely ON hely.C_HELYETTESITETTORARENDID=oo.ID AND CAST(hely.C_HELYETTESITESNAPJA AS DATE) = naptar.C_NAPDATUMA
WHERE
oo.TOROLT='F'
AND oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId))
AND naptar.C_NAPDATUMA <= IIF(@osztalyId IN (SELECT osztalyId FROM @vegzosOsztalyokCsoportok) AND GETDATE() >= @vegzosUtolsoNapDatuma, @vegzosUtolsoNapDatuma, GETDATE())
AND tao.ID IS NULL
AND hely.ID IS NULL
AND (oo.C_TANORANKIVULIFOGLALKOZAS = 'F' OR oo.C_TANORANKIVULIFOGLALKOZAS IS NULL)
AND oo.C_CSENGETESIRENDORAID IS NOT NULL
AND naptar.C_TANEVID = @tanevId
UNION
SELECT
naptar.C_HETSORSZAMA HetSorszam
,hi.ID Id
FROM T_HELYETTESITESIIDOSZAK_OSSZES hi
INNER JOIN T_ORARENDIORA_OSSZES oo on oo.Id=hi.C_HELYETTESITETTORARENDID
INNER JOIN T_NAPTARINAP_OSSZES naptar on naptar.C_NAPDATUMA = CAST(hi.C_HELYETTESITESNAPJA AS DATE) AND naptar.C_TANEVID=hi.C_TANEVID AND naptar.C_INTEZMENYID=hi.C_INTEZMENYID
WHERE
oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM fnGetKapcsolodoOsztalycsoportok(@osztalyId))
AND (oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_CSOPORT_OSSZES WHERE C_TIPUSA=1034) OR oo.C_OSZTALYCSOPORTID IN (SELECT ID FROM T_OSZTALY_OSSZES))
AND hi.TOROLT='F'
AND (oo.C_TANORANKIVULIFOGLALKOZAS = 'F' OR oo.C_TANORANKIVULIFOGLALKOZAS IS NULL)
AND oo.C_CSENGETESIRENDORAID IS NOT NULL
AND oo.TOROLT='F'
AND hi.C_HELYETTESITESNAPJA <= IIF(oo.C_OSZTALYCSOPORTID IN (SELECT osztalyId FROM @vegzosOsztalyokCsoportok) AND GETDATE() >= @vegzosUtolsoNapDatuma, @vegzosUtolsoNapDatuma, GETDATE())
AND NOT EXISTS (
SELECT 1 FROM T_ORARENDIORA_OSSZES ooo
JOIN T_TANITASIORA_OSSZES tao ON tao.C_ORARENDIORAGROUPID = ooo.C_ORARENDIORAGROUPID AND tao.C_DATUM BETWEEN ooo.C_ORAERVENYESSEGKEZDETE AND ooo.C_ORAERVENYESSEGVEGE
WHERE tao.C_DATUM = CAST(hi.C_HELYETTESITESNAPJA AS DATE) AND ooo.ID=hi.C_HELYETTESITETTORARENDID AND tao.TOROLT='F'
)
)a
)a
GROUP BY HetSorszam
ORDER BY HetSorszam
END
GO