init
This commit is contained in:
@@ -0,0 +1,212 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID('sp_GetOrarendKereszttabla_Osztaly') IS NOT NULL BEGIN
|
||||
DROP PROCEDURE sp_GetOrarendKereszttabla_Osztaly
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE sp_GetOrarendKereszttabla_Osztaly
|
||||
@tanevId INT,
|
||||
@aktivTanevId INT
|
||||
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @UtolsoNap DATE = (SELECT TOP 1 C_NAPDATUMA FROM T_NAPTARINAP_OSSZES WHERE C_NAPTIPUSA=1395 AND C_TANEVID = @tanevid AND TOROLT='F')
|
||||
,@HetEleje DATE
|
||||
,@HetVege DATE
|
||||
|
||||
IF (@tanevId = @AktivtanevId AND GETDATE() <= @UtolsoNap)
|
||||
BEGIN
|
||||
SET @HetEleje = (SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, NH.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
|
||||
SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
|
||||
SET @HetEleje = (SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
|
||||
SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
|
||||
END
|
||||
|
||||
CREATE TABLE #KapcsolodoCsoportok (OsztalyId INT, OsztalyCsoportId INT)
|
||||
INSERT INTO #KapcsolodoCsoportok
|
||||
SELECT DISTINCT
|
||||
o.ID Osztaly
|
||||
,k.ID KapcsolodoCsoport
|
||||
FROM T_OSZTALY_OSSZES o
|
||||
CROSS APPLY fnGetKapcsolodoOsztalycsoportokByDate(ID, @HetEleje, @HetVege) k
|
||||
WHERE
|
||||
TOROLT = 'F'
|
||||
AND C_ALTANEVID = @tanevId
|
||||
|
||||
DECLARE @OsztalyhozKapcsolodoOsszesOrarendiora TABLE (OsztalyId INT, OsztalyCsoportId INT, OrarendiOraId INT, TantargyId INT, TanarId INT, TeremId INT, HetirendId INT, HetnapjaId INT, Oraszam INT, OraErvenyessegKezdete DATE, OraErvenyessegVege DATE)
|
||||
INSERT INTO @OsztalyhozKapcsolodoOsszesOrarendiora
|
||||
SELECT
|
||||
k.OsztalyId
|
||||
,k.OsztalyCsoportId
|
||||
,o.ID
|
||||
,C_TANTARGYID
|
||||
,C_TANARID
|
||||
,C_TEREMID
|
||||
,C_HETIREND
|
||||
,C_HETNAPJA
|
||||
,C_ORASZAM
|
||||
,C_ORAERVENYESSEGKEZDETE
|
||||
,C_ORAERVENYESSEGVEGE
|
||||
FROM #KapcsolodoCsoportok k
|
||||
LEFT JOIN T_ORARENDIORA_OSSZES o ON o.C_OSZTALYCSOPORTID = k.OsztalyCsoportId
|
||||
WHERE
|
||||
TOROLT = 'F'
|
||||
|
||||
DECLARE @temp TABLE (OsztalyId INT, OsztalyCsoportNev NVARCHAR(MAX), OsztalyNev NVARCHAR(MAX), HetirendId INT, HetirendNev NVARCHAR(MAX), HetnapjaId INT, Oraszam INT, TantargyNev NVARCHAR(MAX), PedagogusNev NVARCHAR(MAX), TeremNev NVARCHAR(MAX))
|
||||
INSERT INTO @temp
|
||||
SELECT
|
||||
OrarendiOra.OsztalyId OsztalyId
|
||||
,ocs.C_NEV OsztalyCsoportNev
|
||||
,osztalyNev.C_NEV OsztalyNev
|
||||
,OrarendiOra.HetirendId HetirendId
|
||||
,hetirend.C_NAME HetirendNev
|
||||
,OrarendiOra.HetnapjaId HetnapjaId
|
||||
,OrarendiOra.Oraszam Oraszam
|
||||
,ISNULL(Tantargy.C_NEVNYOMTATVANYBAN, Tantargy.C_NEV) TantargyNev
|
||||
,Pedagogus.C_NYOMTATASINEV PedagogusNev
|
||||
,Terem.C_NEV TeremNev
|
||||
FROM @OsztalyhozKapcsolodoOsszesOrarendiora OrarendiOra
|
||||
INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = OrarendiOra.TantargyId
|
||||
INNER JOIN T_FELHASZNALO_OSSZES Pedagogus ON Pedagogus.Id = OrarendiOra.TanarId
|
||||
INNER JOIN T_TEREM_OSSZES Terem ON Terem.Id = OrarendiOra.TeremId
|
||||
INNER JOIN T_DICTIONARYITEMBASE_OSSZES hetirend ON hetirend.Id = OrarendiOra.HetirendId AND hetirend.C_TANEVID = @tanevId
|
||||
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = OrarendiOra.OsztalyCsoportId
|
||||
INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyNev ON osztalyNev.ID = OrarendiOra.OsztalyId
|
||||
WHERE
|
||||
OrarendiOra.OraErvenyessegKezdete <= @Hetvege
|
||||
AND OrarendiOra.OraErvenyessegVege >= @Heteleje
|
||||
|
||||
DECLARE @Hetirendek TABLE (Id INT)
|
||||
INSERT INTO @Hetirendek
|
||||
SELECT DISTINCT HetirendId FROM @temp
|
||||
|
||||
DECLARE @OsszesOra TABLE (OsztalyId INT, Hetirend INT, Nap INT, Oraszam INT)
|
||||
INSERT INTO @OsszesOra
|
||||
SELECT DISTINCT Osztaly, oo.Id, Nap.Nap , OraSzam.OraSzam FROM @Hetirendek oo
|
||||
CROSS JOIN (SELECT DISTINCT OsztalyId FROM #KapcsolodoCsoportok) Osztaly(Osztaly)
|
||||
CROSS JOIN (SELECT DISTINCT Oraszam FROM @temp) OraSzam (OraSzam)
|
||||
CROSS JOIN (VALUES (1408),(1409),(1410),(1411),(1412),(1413)) Nap (Nap)
|
||||
|
||||
DECLARE @TenylegesOra TABLE (OsztalyId INT, Nap INT, OraSzam INT, Foglalkozas NVARCHAR(MAX))
|
||||
INSERT INTO @TenylegesOra
|
||||
SELECT
|
||||
OsztalyId
|
||||
,HetnapjaId
|
||||
,Oraszam
|
||||
,STUFF((SELECT DISTINCT ', ' + CAST(bveg.TantargyNev+' ('+IIF(bveg.OsztalyCsoportNev <> bveg.OsztalyNev, bveg.OsztalyCsoportNev +', ', '') +bveg.PedagogusNev+', '+bveg.TeremNev+', ' +HetirendNev+')' AS VARCHAR(max))
|
||||
FROM @temp bveg
|
||||
WHERE
|
||||
bveg.HetnapjaId=veg.HetnapjaId
|
||||
AND bveg.Oraszam=veg.Oraszam
|
||||
AND (bveg.HetirendId=HetirendId OR bveg.HetirendId=1554)
|
||||
AND bveg.OsztalyId = veg.OsztalyId
|
||||
FOR XML PATH(''), TYPE)
|
||||
.value('.','NVARCHAR(MAX)'),1,2,' ') Foglalkozasok
|
||||
FROM @temp veg
|
||||
|
||||
/*V<EFBFBD>gleges <20>rarend*/
|
||||
CREATE TABLE #Orarend (OsztalyId INT, OsztalyNev NVARCHAR(MAX), Ora INT, Nap INT, Foglalkozas NVARCHAR(MAX))
|
||||
INSERT INTO #Orarend
|
||||
SELECT
|
||||
OsszesOra.OsztalyId
|
||||
,ocs.C_NEV
|
||||
,OsszesOra.Oraszam
|
||||
,OsszesOra.Nap
|
||||
,TenylegesOra.Foglalkozas
|
||||
FROM @OsszesOra OsszesOra
|
||||
LEFT JOIN @TenylegesOra TenylegesOra ON OsszesOra.Nap=TenylegesOra.Nap AND OsszesOra.Oraszam=TenylegesOra.Oraszam AND TenylegesOra.OsztalyId = OsszesOra.OsztalyId
|
||||
LEFT JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.ID = OsszesOra.OsztalyId
|
||||
ORDER BY OsszesOra.Hetirend, OsszesOra.Nap, OsszesOra.Oraszam
|
||||
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE #Napok (Nev NVARCHAR(MAX), Oraszam INT, Rendez INT)
|
||||
INSERT INTO #Napok
|
||||
SELECT DISTINCT
|
||||
*
|
||||
, CASE
|
||||
WHEN nap = 'hetfo' THEN 1
|
||||
WHEN nap = 'kedd' THEN 2
|
||||
WHEN nap = 'szerda' THEN 3
|
||||
WHEN nap = 'csutortok' THEN 4
|
||||
WHEN nap = 'pentek' THEN 5
|
||||
END
|
||||
FROM (VALUES ('hetfo'), ('kedd'), ('szerda'), ('csutortok'), ('pentek')) AS napok(nap)
|
||||
CROSS JOIN (SELECT DISTINCT Oraszam FROM @temp) OraSzam (OraSzam)
|
||||
|
||||
DECLARE @Oraszamok NVARCHAR(MAX),
|
||||
@OraszamokAlias NVARCHAR(MAX)
|
||||
|
||||
SELECT @Oraszamok = ISNULL(@Oraszamok + ', ', '') + '[' + CAST(Oraszam AS NVARCHAR(MAX)) + ']'
|
||||
FROM (SELECT DISTINCT Oraszam FROM @temp ) o
|
||||
|
||||
SELECT @OraszamokAlias = ISNULL(@OraszamokAlias + ', ', '') + Nev +'.' + '[' + CAST(Oraszam AS NVARCHAR(MAX)) + ']' FROM #Napok ORDER BY Rendez, Oraszam
|
||||
|
||||
DECLARE @sql NVARCHAR(MAX)
|
||||
SET @sql = '
|
||||
SELECT DISTINCT
|
||||
ocs.C_NEV OsztalyNev,
|
||||
' + @OraszamokAlias + '
|
||||
FROM #KapcsolodoCsoportok k
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
OsztalyId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1408
|
||||
) hetfo ON hetfo.OsztalyId = k.OsztalyId
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
OsztalyId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1409
|
||||
) kedd ON kedd.OsztalyId = k.OsztalyId
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
OsztalyId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1410
|
||||
) szerda ON szerda.OsztalyId = k.OsztalyId
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
OsztalyId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1411
|
||||
) csutortok ON csutortok.OsztalyId = k.OsztalyId
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
OsztalyId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1412
|
||||
) pentek ON pentek.OsztalyId = k.OsztalyId
|
||||
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.Id = k.OsztalyId
|
||||
ORDER BY C_NEV
|
||||
'
|
||||
|
||||
EXEC sp_executesql @sql
|
||||
|
||||
DROP TABLE #Napok
|
||||
DROP TABLE #Orarend
|
||||
DROP TABLE #KapcsolodoCsoportok
|
||||
|
||||
END
|
||||
|
||||
GO
|
@@ -0,0 +1,208 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID('sp_GetOrarendKereszttabla_Pedagogus') IS NOT NULL BEGIN
|
||||
DROP PROCEDURE sp_GetOrarendKereszttabla_Pedagogus
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE sp_GetOrarendKereszttabla_Pedagogus
|
||||
@tanevId INT,
|
||||
@aktivTanevId INT
|
||||
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @UtolsoNap DATE = (SELECT TOP 1 C_NAPDATUMA FROM T_NAPTARINAP_OSSZES WHERE C_NAPTIPUSA=1395 AND C_TANEVID=@tanevid AND TOROLT='F')
|
||||
,@HetEleje DATE
|
||||
,@HetVege DATE
|
||||
|
||||
IF (@tanevId = @AktivtanevId AND GETDATE() <= @UtolsoNap)
|
||||
BEGIN
|
||||
SET @HetEleje = (SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, NH.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
|
||||
SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
|
||||
SET @HetEleje = (SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
|
||||
SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
|
||||
END
|
||||
|
||||
CREATE TABLE #KapcsolodoCsoportok (OsztalyId INT, OsztalyCsoportId INT)
|
||||
INSERT INTO #KapcsolodoCsoportok
|
||||
SELECT DISTINCT
|
||||
o.ID Osztaly
|
||||
,k.ID KapcsolodoCsoport
|
||||
FROM T_OSZTALY_OSSZES o
|
||||
CROSS APPLY fnGetKapcsolodoOsztalycsoportokByDate(ID, @HetEleje, @HetVege) k
|
||||
WHERE
|
||||
TOROLT = 'F'
|
||||
AND C_ALTANEVID = @tanevId
|
||||
|
||||
DECLARE @PedagogushozKapcsolodoOsszesOrarendiora TABLE (OsztalyId INT, OsztalyCsoportId INT, OrarendiOraId INT, TantargyId INT, PedagogusId INT, TeremId INT, HetirendId INT, HetnapjaId INT, Oraszam INT, OraErvenyessegKezdete DATE, OraErvenyessegVege DATE)
|
||||
INSERT INTO @PedagogushozKapcsolodoOsszesOrarendiora
|
||||
SELECT
|
||||
k.OsztalyId
|
||||
,K.OsztalyCsoportId
|
||||
,o.ID
|
||||
,C_TANTARGYID
|
||||
,C_TANARID
|
||||
,C_TEREMID
|
||||
,C_HETIREND
|
||||
,C_HETNAPJA
|
||||
,C_ORASZAM
|
||||
,C_ORAERVENYESSEGKEZDETE
|
||||
,C_ORAERVENYESSEGVEGE
|
||||
FROM #KapcsolodoCsoportok k
|
||||
LEFT JOIN T_ORARENDIORA_OSSZES o ON o.C_OSZTALYCSOPORTID = k.OsztalyCsoportId
|
||||
WHERE
|
||||
TOROLT = 'F'
|
||||
|
||||
CREATE TABLE #temp (PedagogusId INT, HetirendId INT, HetirendNev NVARCHAR(MAX), HetnapjaId INT, Oraszam INT, TantargyNev NVARCHAR(MAX), TeremNev NVARCHAR(MAX), OsztalyNev NVARCHAR(MAX))
|
||||
INSERT INTO #temp
|
||||
SELECT
|
||||
OrarendiOra.PedagogusId PedagogusId
|
||||
,OrarendiOra.HetirendId HetirendId
|
||||
,hetirend.C_NAME HetirendNev
|
||||
,OrarendiOra.HetnapjaId HetnapjaId
|
||||
,OrarendiOra.Oraszam Oraszam
|
||||
,ISNULL(Tantargy.C_NEVNYOMTATVANYBAN, Tantargy.C_NEV) TantargyNev
|
||||
,Terem.C_NEV TeremNev
|
||||
,ocs.C_NEV OsztalyNev
|
||||
FROM @PedagogushozKapcsolodoOsszesOrarendiora OrarendiOra
|
||||
INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = OrarendiOra.TantargyId
|
||||
INNER JOIN T_TEREM_OSSZES Terem ON Terem.Id = OrarendiOra.TeremId
|
||||
INNER JOIN T_DICTIONARYITEMBASE_OSSZES hetirend ON hetirend.Id = OrarendiOra.HetirendId AND hetirend.C_TANEVID = @tanevId
|
||||
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.Id = OrarendiOrA.OsztalyCsoportId
|
||||
WHERE
|
||||
OrarendiOra.OraErvenyessegKezdete <= @Hetvege
|
||||
AND OrarendiOra.OraErvenyessegVege >= @Heteleje
|
||||
|
||||
DECLARE @Hetirendek TABLE (Id INT)
|
||||
INSERT INTO @Hetirendek
|
||||
SELECT DISTINCT HetirendId FROM #temp
|
||||
|
||||
DECLARE @OsszesOra TABLE (PedagogusId INT, Hetirend INT, Nap INT, Oraszam INT)
|
||||
INSERT INTO @OsszesOra
|
||||
SELECT DISTINCT PedagogusId, oo.Id, Nap.Nap , OraSzam.OraSzam FROM @Hetirendek oo
|
||||
CROSS JOIN (SELECT DISTINCT PedagogusId FROM #temp) Pedagogus(PedagogusId)
|
||||
CROSS JOIN (SELECT DISTINCT Oraszam FROM #temp) OraSzam (OraSzam)
|
||||
CROSS JOIN (VALUES (1408),(1409),(1410),(1411),(1412),(1413)) Nap (Nap)
|
||||
|
||||
DECLARE @TenylegesOra TABLE (PedagogusId INT, Nap INT, OraSzam INT, Foglalkozas NVARCHAR(MAX))
|
||||
INSERT INTO @TenylegesOra
|
||||
SELECT
|
||||
PedagogusId
|
||||
,HetnapjaId
|
||||
,Oraszam
|
||||
,STUFF((SELECT DISTINCT ', ' + CAST(bveg.TantargyNev+' (' +bveg.OsztalyNev+', ' + bveg.TeremNev +', ' +HetirendNev+')' AS VARCHAR(max))
|
||||
FROM #temp bveg
|
||||
WHERE
|
||||
bveg.HetnapjaId=veg.HetnapjaId
|
||||
AND bveg.Oraszam=veg.Oraszam
|
||||
AND (bveg.HetirendId=HetirendId OR bveg.HetirendId=1554)
|
||||
AND bveg.PedagogusId = veg.PedagogusId
|
||||
FOR XML PATH(''), TYPE)
|
||||
.value('.','NVARCHAR(MAX)'),1,2,' ') Foglalkozasok
|
||||
FROM #temp veg
|
||||
|
||||
/*V<EFBFBD>gleges <20>rarend*/
|
||||
CREATE TABLE #Orarend (PedagogusId INT, PedagogusNev NVARCHAR(MAX), Ora INT, Nap INT, Foglalkozas NVARCHAR(MAX))
|
||||
INSERT INTO #Orarend
|
||||
SELECT
|
||||
OsszesOra.PedagogusId
|
||||
,ped.C_NYOMTATASINEV
|
||||
,OsszesOra.Oraszam
|
||||
,OsszesOra.Nap
|
||||
,TenylegesOra.Foglalkozas
|
||||
FROM @OsszesOra OsszesOra
|
||||
LEFT JOIN @TenylegesOra TenylegesOra ON OsszesOra.Nap=TenylegesOra.Nap AND OsszesOra.Oraszam=TenylegesOra.Oraszam AND TenylegesOra.PedagogusId = OsszesOra.PedagogusId
|
||||
LEFT JOIN T_FELHASZNALO_OSSZES ped ON ped.ID = OsszesOra.PedagogusId
|
||||
ORDER BY OsszesOra.Hetirend, OsszesOra.Nap, OsszesOra.Oraszam
|
||||
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE #Napok (Nev NVARCHAR(MAX), Oraszam INT, Rendez INT)
|
||||
INSERT INTO #Napok
|
||||
SELECT DISTINCT
|
||||
*
|
||||
, CASE
|
||||
WHEN nap = 'hetfo' THEN 1
|
||||
WHEN nap = 'kedd' THEN 2
|
||||
WHEN nap = 'szerda' THEN 3
|
||||
WHEN nap = 'csutortok' THEN 4
|
||||
WHEN nap = 'pentek' THEN 5
|
||||
END
|
||||
FROM (VALUES ('hetfo'), ('kedd'), ('szerda'), ('csutortok'), ('pentek')) AS napok(nap)
|
||||
CROSS JOIN (SELECT DISTINCT Oraszam FROM #temp) OraSzam (OraSzam)
|
||||
|
||||
DECLARE @Oraszamok NVARCHAR(MAX),
|
||||
@OraszamokAlias NVARCHAR(MAX)
|
||||
|
||||
SELECT @Oraszamok = ISNULL(@Oraszamok + ', ', '') + '[' + CAST(Oraszam AS NVARCHAR(MAX)) + ']'
|
||||
FROM (SELECT DISTINCT Oraszam FROM #temp ) o
|
||||
|
||||
SELECT @OraszamokAlias = ISNULL(@OraszamokAlias + ', ', '') + Nev +'.' + '[' + CAST(Oraszam AS NVARCHAR(MAX)) + ']' FROM #Napok ORDER BY Rendez, Oraszam
|
||||
|
||||
DECLARE @sql NVARCHAR(MAX)
|
||||
SET @sql = '
|
||||
SELECT DISTINCT
|
||||
f.C_NYOMTATASINEV PedagogusNev,
|
||||
' + @OraszamokAlias + '
|
||||
FROM (SELECT DISTINCT PedagogusId FROM #temp) k
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
PedagogusId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1408
|
||||
) hetfo ON hetfo.PedagogusId = k.PedagogusId
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
PedagogusId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1409
|
||||
) kedd ON kedd.PedagogusId = k.PedagogusId
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
PedagogusId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1410
|
||||
) szerda ON szerda.PedagogusId = k.PedagogusId
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
PedagogusId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1411
|
||||
) csutortok ON csutortok.PedagogusId = k.PedagogusId
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
PedagogusId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1412
|
||||
) pentek ON pentek.PedagogusId = k.PedagogusId
|
||||
INNER JOIN T_FELHASZNALO_OSSZES f ON f.Id = k.PedagogusId
|
||||
ORDER BY C_NYOMTATASINEV
|
||||
'
|
||||
|
||||
EXEC sp_executesql @sql
|
||||
|
||||
DROP TABLE #Napok
|
||||
DROP TABLE #Orarend
|
||||
DROP TABLE #KapcsolodoCsoportok
|
||||
|
||||
END
|
||||
|
||||
GO
|
@@ -0,0 +1,207 @@
|
||||
SET ANSI_NULLS ON
|
||||
GO
|
||||
SET QUOTED_IDENTIFIER ON
|
||||
GO
|
||||
|
||||
IF OBJECT_ID('sp_GetOrarendKereszttabla_Terem') IS NOT NULL BEGIN
|
||||
DROP PROCEDURE sp_GetOrarendKereszttabla_Terem
|
||||
END
|
||||
GO
|
||||
|
||||
CREATE PROCEDURE sp_GetOrarendKereszttabla_Terem
|
||||
@tanevId INT,
|
||||
@aktivTanevId INT
|
||||
|
||||
AS
|
||||
BEGIN
|
||||
SET NOCOUNT ON;
|
||||
|
||||
DECLARE @UtolsoNap DATE = (SELECT TOP 1 C_NAPDATUMA FROM T_NAPTARINAP_OSSZES WHERE C_NAPTIPUSA=1395 AND C_TANEVID=@tanevid AND TOROLT='F')
|
||||
,@HetEleje DATE
|
||||
,@HetVege DATE
|
||||
|
||||
IF (@tanevId = @AktivtanevId AND GETDATE() <= @UtolsoNap)
|
||||
BEGIN
|
||||
SET @HetEleje = (SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, NH.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
|
||||
SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid)
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SET @HetEleje = (SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
|
||||
SET @HetVege = (SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId)
|
||||
END
|
||||
|
||||
CREATE TABLE #KapcsolodoCsoportok (OsztalyId INT, OsztalyCsoportId INT)
|
||||
INSERT INTO #KapcsolodoCsoportok
|
||||
SELECT DISTINCT
|
||||
o.ID Osztaly
|
||||
,k.ID KapcsolodoCsoport
|
||||
FROM T_OSZTALY_OSSZES o
|
||||
CROSS APPLY fnGetKapcsolodoOsztalycsoportokByDate(ID, @HetEleje, @HetVege) k
|
||||
WHERE
|
||||
TOROLT = 'F'
|
||||
AND C_ALTANEVID = @tanevId
|
||||
|
||||
DECLARE @TermekhezKapcsolodoOsszesOrarendiora TABLE (OsztalyId INT, OsztalyCsoportId INT, OrarendiOraId INT, TantargyId INT, TanarId INT, TeremId INT, HetirendId INT, HetnapjaId INT, Oraszam INT, OraErvenyessegKezdete DATE, OraErvenyessegVege DATE)
|
||||
INSERT INTO @TermekhezKapcsolodoOsszesOrarendiora
|
||||
SELECT
|
||||
k.OsztalyId
|
||||
,K.OsztalyCsoportId
|
||||
,o.ID
|
||||
,C_TANTARGYID
|
||||
,C_TANARID
|
||||
,C_TEREMID
|
||||
,C_HETIREND
|
||||
,C_HETNAPJA
|
||||
,C_ORASZAM
|
||||
,C_ORAERVENYESSEGKEZDETE
|
||||
,C_ORAERVENYESSEGVEGE
|
||||
FROM #KapcsolodoCsoportok k
|
||||
LEFT JOIN T_ORARENDIORA_OSSZES o ON o.C_OSZTALYCSOPORTID = k.OsztalyCsoportId
|
||||
WHERE
|
||||
TOROLT = 'F'
|
||||
|
||||
CREATE TABLE #temp (TeremId INT, HetirendId INT, HetirendNev NVARCHAR(MAX), HetnapjaId INT, Oraszam INT, TantargyNev NVARCHAR(MAX), PedagogusNev NVARCHAR(MAX), OsztalyNev NVARCHAR(MAX))
|
||||
INSERT INTO #temp
|
||||
SELECT
|
||||
OrarendiOra.TeremId TeremId
|
||||
,OrarendiOra.HetirendId HetirendId
|
||||
,hetirend.C_NAME HetirendNev
|
||||
,OrarendiOra.HetnapjaId HetnapjaId
|
||||
,OrarendiOra.Oraszam Oraszam
|
||||
,ISNULL(Tantargy.C_NEVNYOMTATVANYBAN, Tantargy.C_NEV) TantargyNev
|
||||
,Pedagogus.C_NYOMTATASINEV PedagogusNev
|
||||
,ocs.C_NEV OsztalyNev
|
||||
FROM @TermekhezKapcsolodoOsszesOrarendiora OrarendiOra
|
||||
INNER JOIN T_TANTARGY_OSSZES Tantargy ON Tantargy.Id = OrarendiOra.TantargyId
|
||||
INNER JOIN T_FELHASZNALO_OSSZES Pedagogus ON Pedagogus.Id = OrarendiOra.TanarId
|
||||
INNER JOIN T_DICTIONARYITEMBASE_OSSZES hetirend ON hetirend.Id = OrarendiOra.HetirendId AND hetirend.C_TANEVID = @tanevId
|
||||
INNER JOIN T_OSZTALYCSOPORT_OSSZES ocs ON ocs.Id = OrarendiOrA.OsztalyCsoportId
|
||||
WHERE
|
||||
OrarendiOra.OraErvenyessegKezdete <= @Hetvege
|
||||
AND OrarendiOra.OraErvenyessegVege >= @Heteleje
|
||||
|
||||
DECLARE @Hetirendek TABLE (Id INT)
|
||||
INSERT INTO @Hetirendek
|
||||
SELECT DISTINCT HetirendId FROM #temp
|
||||
|
||||
DECLARE @OsszesOra TABLE (TeremId INT, Hetirend INT, Nap INT, Oraszam INT)
|
||||
INSERT INTO @OsszesOra
|
||||
SELECT DISTINCT Terem, oo.Id, Nap.Nap , OraSzam.OraSzam FROM @Hetirendek oo
|
||||
CROSS JOIN (SELECT DISTINCT TeremId FROM #temp) Terem(Terem)
|
||||
CROSS JOIN (SELECT DISTINCT Oraszam FROM #temp) OraSzam (OraSzam)
|
||||
CROSS JOIN (VALUES (1408),(1409),(1410),(1411),(1412),(1413)) Nap (Nap)
|
||||
|
||||
DECLARE @TenylegesOra TABLE (TeremId INT, Nap INT, OraSzam INT, Foglalkozas NVARCHAR(MAX))
|
||||
INSERT INTO @TenylegesOra
|
||||
SELECT
|
||||
TeremId
|
||||
,HetnapjaId
|
||||
,Oraszam
|
||||
,STUFF((SELECT DISTINCT ', ' + CAST(bveg.TantargyNev+' ('+bveg.PedagogusNev+', '+bveg.OsztalyNev+', ' +HetirendNev+')' AS VARCHAR(max))
|
||||
FROM #temp bveg
|
||||
WHERE
|
||||
bveg.HetnapjaId=veg.HetnapjaId
|
||||
AND bveg.Oraszam=veg.Oraszam
|
||||
AND (bveg.HetirendId=HetirendId OR bveg.HetirendId=1554)
|
||||
AND bveg.TeremId = veg.TeremId
|
||||
FOR XML PATH(''), TYPE)
|
||||
.value('.','NVARCHAR(MAX)'),1,2,' ') Foglalkozasok
|
||||
FROM #temp veg
|
||||
|
||||
/*V<EFBFBD>gleges <20>rarend*/
|
||||
CREATE TABLE #Orarend (TeremId INT, TeremNev NVARCHAR(MAX), Ora INT, Nap INT, Foglalkozas NVARCHAR(MAX))
|
||||
INSERT INTO #Orarend
|
||||
SELECT
|
||||
OsszesOra.TeremId
|
||||
,terem.C_NEV
|
||||
,OsszesOra.Oraszam
|
||||
,OsszesOra.Nap
|
||||
,TenylegesOra.Foglalkozas
|
||||
FROM @OsszesOra OsszesOra
|
||||
LEFT JOIN @TenylegesOra TenylegesOra ON OsszesOra.Nap=TenylegesOra.Nap AND OsszesOra.Oraszam=TenylegesOra.Oraszam AND TenylegesOra.TeremId = OsszesOra.TeremId
|
||||
LEFT JOIN T_TEREM_OSSZES Terem ON Terem.ID = OsszesOra.TeremId
|
||||
ORDER BY OsszesOra.Hetirend, OsszesOra.Nap, OsszesOra.Oraszam
|
||||
|
||||
--------------------------------------------------------------------------------------------------------------
|
||||
CREATE TABLE #Napok (Nev NVARCHAR(MAX), Oraszam INT, Rendez INT)
|
||||
INSERT INTO #Napok
|
||||
SELECT DISTINCT
|
||||
*
|
||||
, CASE
|
||||
WHEN nap = 'hetfo' THEN 1
|
||||
WHEN nap = 'kedd' THEN 2
|
||||
WHEN nap = 'szerda' THEN 3
|
||||
WHEN nap = 'csutortok' THEN 4
|
||||
WHEN nap = 'pentek' THEN 5
|
||||
END
|
||||
FROM (VALUES ('hetfo'), ('kedd'), ('szerda'), ('csutortok'), ('pentek')) AS napok(nap)
|
||||
CROSS JOIN (SELECT DISTINCT Oraszam FROM #temp) OraSzam (OraSzam)
|
||||
|
||||
DECLARE @Oraszamok NVARCHAR(MAX),
|
||||
@OraszamokAlias NVARCHAR(MAX)
|
||||
|
||||
SELECT @Oraszamok = ISNULL(@Oraszamok + ', ', '') + '[' + CAST(Oraszam AS NVARCHAR(MAX)) + ']'
|
||||
FROM (SELECT DISTINCT Oraszam FROM #temp ) o
|
||||
|
||||
SELECT @OraszamokAlias = ISNULL(@OraszamokAlias + ', ', '') + Nev +'.' + '[' + CAST(Oraszam AS NVARCHAR(MAX)) + ']' FROM #Napok ORDER BY Rendez, Oraszam
|
||||
|
||||
DECLARE @sql NVARCHAR(MAX)
|
||||
SET @sql = '
|
||||
SELECT DISTINCT
|
||||
t.C_NEV TeremNev,
|
||||
' + @OraszamokAlias + '
|
||||
FROM (SELECT DISTINCT TeremId FROM #temp) k
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
TeremId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1408
|
||||
) hetfo ON hetfo.TeremId = k.TeremId
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
TeremId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1409
|
||||
) kedd ON kedd.TeremId = k.TeremId
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
TeremId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1410
|
||||
) szerda ON szerda.TeremId = k.TeremId
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
TeremId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1411
|
||||
) csutortok ON csutortok.TeremId = k.TeremId
|
||||
INNER JOIN (
|
||||
SELECT
|
||||
TeremId
|
||||
,'+ @Oraszamok +'
|
||||
FROM #Orarend
|
||||
PIVOT (MAX(Foglalkozas) FOR Ora IN (' + @Oraszamok + '))a
|
||||
WHERE Nap = 1412
|
||||
) pentek ON pentek.TeremId = k.TeremId
|
||||
INNER JOIN T_TEREM_OSSZES t ON t.Id = k.TeremId
|
||||
ORDER BY C_NEV
|
||||
'
|
||||
|
||||
EXEC sp_executesql @sql
|
||||
|
||||
DROP TABLE #Napok
|
||||
DROP TABLE #Orarend
|
||||
DROP TABLE #KapcsolodoCsoportok
|
||||
|
||||
END
|
||||
|
||||
GO
|
Reference in New Issue
Block a user