192 lines
No EOL
6.7 KiB
Transact-SQL
192 lines
No EOL
6.7 KiB
Transact-SQL
IF OBJECT_ID('sp_GetTeremrend') IS NOT NULL
|
|
BEGIN
|
|
DROP PROCEDURE sp_GetTeremrend
|
|
END
|
|
GO
|
|
CREATE PROCEDURE [sp_GetTeremrend]
|
|
@TanevId int,
|
|
@IntezmenyId int
|
|
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @OrarendiOra TABLE (Hetirend int, OraSzam int, Hetnapja int, Terem nvarchar(max), Foglalkozas nvarchar(max)) --Összes órarendi óra
|
|
DECLARE @Hetirendek TABLE (Hetirend int) --Összes hetirend
|
|
DECLARE @Ures TABLE (Hetirend int, OraSzam int, Hetnapja int, Terem nvarchar(max)) --Összes hetirendhez órasávok generálva
|
|
DECLARE @Teljes TABLE (Hetirend int, OraSzam int, Hetnapja int, Terem nvarchar(max), Foglalkozas nvarchar(max)) --@Ures tábla, a létező órákkal kiegészítve
|
|
DECLARE @AKTUALISHETELEJE DATE=(SELECT TOP 1 C_HETKEZDONAPJA FROM T_NAPTARIHET
|
|
WHERE C_INTEZMENYID=@IntezmenyId AND C_TANEVID=@TANEVID
|
|
AND TOROLT='F' AND C_HETKEZDONAPJA<=CONVERT(DATE,GETDATE())
|
|
AND C_HETUTOLSONAPJA>=CONVERT(DATE,GETDATE())
|
|
)
|
|
|
|
DECLARE @AKTUALISHETVEGE DATE=( SELECT TOP 1 C_HETUTOLSONAPJA FROM T_NAPTARIHET
|
|
WHERE C_INTEZMENYID=@IntezmenyId AND C_TANEVID=@TanevId
|
|
AND TOROLT='F' AND C_HETKEZDONAPJA<=CONVERT(DATE,GETDATE())
|
|
AND C_HETUTOLSONAPJA>=CONVERT(DATE,GETDATE())
|
|
)
|
|
|
|
-- @Hetirendek tábálába inzertálás
|
|
INSERT INTO @Hetirendek
|
|
SELECT DISTINCT C_HETIREND
|
|
FROM T_ORARENDIORA_OSSZES WHERE TOROLT='F' AND C_TANEVID=@TANEVID AND C_INTEZMENYID=@IntezmenyId
|
|
|
|
-- @OrarendiOra tábálába inzertálás
|
|
INSERT INTO @OrarendiOra
|
|
SELECT C_HETIREND,
|
|
OrarendiOra.C_ORASZAM,
|
|
C_HETNAPJA,
|
|
Terem.C_NEV,
|
|
--Összefűzi a foglalkozásokat, ha teremre egyszerre több foglalkozás van felvéve egy órára
|
|
STUFF(
|
|
(SELECT DISTINCT ', ' + ISNULL(CAST(Foglalkozas.C_NEV AS VARCHAR(MAX)),'')
|
|
FROM T_ORARENDIORA_OSSZES OrarendiOraFoglalkozas
|
|
INNER JOIN T_FOGLALKOZAS_OSSZES Foglalkozas ON Foglalkozas.ID = OrarendiOraFoglalkozas.C_FOGLALKOZASID
|
|
where OrarendiOraFoglalkozas.C_TEREMID = OrarendiOra.C_TEREMID AND
|
|
(OrarendiOraFoglalkozas.C_HETIREND = OrarendiOra.C_HETIREND OR OrarendiOraFoglalkozas.C_HETIREND = 1554) AND
|
|
OrarendiOraFoglalkozas.C_HETNAPJA = OrarendiOra.C_HETNAPJA AND
|
|
OrarendiOraFoglalkozas.C_ORASZAM = OrarendiOra.c_oraszam AND
|
|
((OrarendiOraFoglalkozas.C_ORAERVENYESSEGKEZDETE<=@AktualisHetEleje) and (OrarendiOraFoglalkozas.c_oraervenyessegvege>=@AktualisHetVege)or
|
|
(OrarendiOraFoglalkozas.C_ORAERVENYESSEGKEZDETE>=@AktualisHetEleje) and (OrarendiOraFoglalkozas.C_ORAERVENYESSEGKEZDETE<=@AktualisHetVege)) AND
|
|
Foglalkozas.TOROLT = 'F' AND
|
|
Foglalkozas.C_INTEZMENYID = @IntezmenyId AND
|
|
Foglalkozas.C_TANEVID = @TanevId AND
|
|
OrarendiOraFoglalkozas.Torolt ='F' AND
|
|
OrarendiOraFoglalkozas.C_TANEVID =@TanevId
|
|
|
|
FOR XML PATH('')),1,1,''
|
|
) AS Foglalkozas
|
|
FROM T_ORARENDIORA_OSSZES OrarendiOra
|
|
INNER JOIN T_TEREM_OSSZES Terem ON Terem.ID = OrarendiOra.C_TEREMID
|
|
WHERE OrarendiOra.C_INTEZMENYID = @IntezmenyId AND
|
|
OrarendiOra.C_TANEVID = @TanevId AND
|
|
OrarendiOra.TOROLT = 'F' AND
|
|
OrarendiOra.C_TEREMID IS NOT NULL
|
|
|
|
|
|
|
|
-- @Ures tábálába inzertálás
|
|
INSERT INTO @Ures
|
|
SELECT HetiRend,
|
|
OraSzam,
|
|
Hetnapja,
|
|
Terem
|
|
FROM @Hetirendek
|
|
CROSS JOIN (SELECT DISTINCT OraSzam FROM @OrarendiOra) OraSzam (OraSzam)
|
|
CROSS JOIN (SELECT DISTINCT Terem FROM @OrarendiOra) Terem (Terem)
|
|
CROSS JOIN (SELECT DISTINCT Hetnapja FROM @OrarendiOra) Hetnapja (Hetnapja)
|
|
|
|
|
|
-- @Teljes tábálába inzertálás
|
|
INSERT INTO @Teljes
|
|
SELECT Ures.*,
|
|
OrarendiOra.Foglalkozas
|
|
FROM @Ures Ures
|
|
LEFT JOIN @OrarendiOra OrarendiOra ON OrarendiOra.Hetirend = Ures.Hetirend AND
|
|
OrarendiOra.Hetnapja = Ures.Hetnapja AND
|
|
OrarendiOra.OraSzam = Ures.OraSzam AND
|
|
OrarendiOra.Terem = Ures.Terem
|
|
|
|
-- Az Excel nyomtatvány munkalap- és táblázat nevei
|
|
SELECT Hetnapja
|
|
FROM (SELECT DISTINCT C_NAME Hetnapja,
|
|
C_VALUE Sorrend
|
|
FROM @OrarendiOra
|
|
INNER JOIN T_DICTIONARYITEMBASE_OSSZES DictionaryItemBase on DictionaryItemBase.ID = Hetnapja
|
|
) Hetnapja
|
|
ORDER BY Sorrend
|
|
|
|
SELECT Hetirend
|
|
FROM (SELECT DISTINCT C_NAME Hetirend,
|
|
C_VALUE Sorrend
|
|
FROM @Hetirendek
|
|
INNER JOIN T_DICTIONARYITEMBASE_OSSZES DictionaryItemBase on DictionaryItemBase.ID = Hetirend
|
|
--WHERE DictionaryItemBase.ID <> 1554--Minden hét
|
|
) Hetirend
|
|
ORDER BY Hetirend
|
|
|
|
-- @Teljes tábla feltöltése, fő lekérdezés
|
|
DECLARE KurzorHetirend CURSOR FOR
|
|
SELECT Hetirend
|
|
FROM @Hetirendek
|
|
--WHERE Hetirend <> 1554
|
|
ORDER BY Hetirend
|
|
|
|
DECLARE @Hetirend INT
|
|
|
|
DECLARE KurzorHetnapja CURSOR FOR
|
|
SELECT DISTINCT Hetnapja
|
|
FROM @Ures
|
|
ORDER BY Hetnapja
|
|
|
|
DECLARE @Hetnapja INT
|
|
|
|
OPEN KurzorHetirend
|
|
FETCH NEXT FROM KurzorHetirend INTO @Hetirend
|
|
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
|
|
OPEN KurzorHetnapja
|
|
FETCH NEXT FROM KurzorHetnapja INTO @Hetnapja
|
|
|
|
-- A "Minden hét" óráinak inzertálása minden hetirendbe
|
|
INSERT INTO @Teljes
|
|
SELECT @Hetirend,
|
|
OraSzam,
|
|
Hetnapja,
|
|
Terem,
|
|
Foglalkozas
|
|
FROM @OrarendiOra
|
|
WHERE Hetirend = 1554
|
|
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
|
|
CREATE table #VeglegesteremOrarend(Terem nvarchar(max), [0] nvarchar(max), [1] nvarchar(max), [2] nvarchar(max), [3] nvarchar(max), [4] nvarchar(max), [5] nvarchar(max),
|
|
[6] nvarchar(max), [7] nvarchar(max), [8] nvarchar(max), [9] nvarchar(max), [10] nvarchar(max))
|
|
|
|
INSERT INTO #VeglegesTeremOrarend
|
|
SELECT Vegleges.Terem,
|
|
Vegleges.[0],
|
|
Vegleges.[1],
|
|
Vegleges.[2],
|
|
Vegleges.[3],
|
|
Vegleges.[4],
|
|
Vegleges.[5],
|
|
Vegleges.[6],
|
|
Vegleges.[7],
|
|
Vegleges.[8],
|
|
Vegleges.[9],
|
|
Vegleges.[10]
|
|
FROM @Teljes
|
|
|
|
PIVOT
|
|
(
|
|
MAX(Foglalkozas) FOR OraSzam IN ([0],[1],[2],[3],[4],[5],[6],[7],[8],[9],[10])
|
|
) Vegleges
|
|
|
|
WHERE Vegleges.Hetirend = @Hetirend AND
|
|
Vegleges.Hetnapja = @Hetnapja
|
|
|
|
SELECT *
|
|
FROM #VeglegesTeremOrarend
|
|
|
|
DROP TABLE #VeglegesTeremOrarend
|
|
FETCH NEXT FROM KurzorHetnapja INTO @Hetnapja
|
|
|
|
END
|
|
|
|
FETCH NEXT FROM KurzorHetirend INTO @Hetirend
|
|
CLOSE KurzorHetnapja
|
|
|
|
END
|
|
|
|
CLOSE KurzorHetirend
|
|
DEALLOCATE KurzorHetnapja
|
|
DEALLOCATE KurzorHetirend
|
|
|
|
END
|
|
|
|
GO |