This commit is contained in:
2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View File

@@ -0,0 +1,279 @@
-- =============================================
-- Description: <Előszedi a tanuló értékeléseket, havi bontásban tantárgy és osztálycsoport alapján>
-- NOTE: EZT A HÁROM TÁROLT ELJÁRÁST EGYBEN KELL KEZELNI, HA MÓDOSÍTJUK!!!
-- - sp_GenerateErtekelesekTempTabla
-- - sp_GenerateErtekelesekMagatartasSzorgalomTempTabla
-- - sp_GenerateErtekelesekTempTablaByTanulo
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GenerateErtekelesekTempTabla]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GenerateErtekelesekTempTabla]
END
GO
CREATE PROCEDURE [dbo].[sp_GenerateErtekelesekTempTabla]
@pTantargyId INT
,@pOsztalyCsoportId INT
,@pFelevVegeDatum DATE
,@pErtekelesTipusEvkozi INT
,@pErtekelesTipusFelevi INT
,@pErtekelesTipusEvvegi INT
,@pDatum DATE = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;
IF @pDatum IS NULL
SET @pDatum = CONVERT(DATE, GETDATE())
DECLARE @TempDictionaryItem TABLE (
ID INT PRIMARY KEY
,C_VALUE INT
,C_ORDER INT
,C_INTEZMENYID INT
,C_TANEVID INT
)
INSERT INTO @TempDictionaryItem
SELECT
ID
,C_VALUE
,C_ORDER
,C_INTEZMENYID
,C_TANEVID
FROM
T_DICTIONARYITEMBASE
WHERE
C_TYPE IN ('OsztalyzatTipus')
AND TOROLT = 'F'
DECLARE @TempTanuloErtekeles TABLE (
ID INT
,Datum NVARCHAR(255)
,TipusId INT
,TanuloId INT
,TanuloNev NVARCHAR(255)
,TanuloNevElotagNelkul NVARCHAR(255)
,AnyjaNeve NVARCHAR(255)
,SzuletesiIdo DATE
,OsztalyNev NVARCHAR(255)
,Honap NVARCHAR(2)
,ErtekelesOsztalyzat INT
,ErtekelesSzoveg NVARCHAR(MAX)
,ErtekelesSzovegRovidNev NVARCHAR(3)
,ErtekelesSzazalek INT
,Suly INT
)
INSERT INTO @TempTanuloErtekeles
SELECT DISTINCT *
FROM (
SELECT DISTINCT
tanuloErtekeles.ID ID
,tanuloErtekeles.C_DATUM Datum
,tanuloErtekeles.C_TIPUSID TipusId
,tanuloCsoport.C_TANULOID TanuloId
,felhasznalo.C_NYOMTATASINEV TanuloNev
,IIF(felhasznalo.C_NEVSORREND = 'T', --
felhasznalo.C_UTONEV + ' '+ felhasznalo.C_VEZETEKNEV, --
felhasznalo.C_VEZETEKNEV + ' ' + felhasznalo.C_UTONEV) TanuloNevElotagNelkul
,felhasznalo.C_ANYJANEVE AnyjaNeve
,felhasznalo.C_SZULETESIDATUM SzuletesiIdo
,osztalyCsoport.C_NEV OsztalyNev
,CASE WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusFelevi
THEN 'I'
WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusEvvegi
THEN 'II'
ELSE
CASE
WHEN CAST(tanuloErtekeles.C_DATUM AS DATE) > @pFelevVegeDatum
THEN CAST(MONTH(tanuloErtekeles.C_DATUM) + 1 AS NVARCHAR(2))
ELSE CAST(MONTH(tanuloErtekeles.C_DATUM) AS NVARCHAR(2))
END
END Honap
,ertekelesOsztalyzat.C_VALUE ErtekelesOsztalyzat
,tanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg
,tanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev
,tanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek
,tanariAtlagSuly.C_SULY Suly
FROM (
SELECT
C_TANULOID
,C_OSZTALYCSOPORTID
FROM
T_TANULOCSOPORT
WHERE
TOROLT = 'F'
AND C_BELEPESDATUM <= @pDatum
AND (C_KILEPESDATUM IS NULL OR C_KILEPESDATUM >= @pDatum)
AND C_OSZTALYCSOPORTID = @pOsztalyCsoportId
) AS tanuloCsoport
INNER JOIN (
SELECT
ID
,C_NYOMTATASINEV
,C_NEVSORREND
,C_VEZETEKNEV
,C_UTONEV
,C_ANYJANEVE
,C_SZULETESIDATUM
FROM
T_FELHASZNALO
WHERE
TOROLT = 'F'
) AS felhasznalo ON
felhasznalo.ID = tanuloCsoport.C_TANULOID
LEFT JOIN
T_OSZTALYCSOPORT osztalyCsoport ON
osztalyCsoport.ID = tanuloCsoport.C_OSZTALYCSOPORTID
AND osztalyCsoport.TOROLT = 'F'
LEFT JOIN (
SELECT
TanuloErtekeles.ID
,TanuloErtekeles.C_DATUM
,TanuloErtekeles.C_TIPUSID
,TanuloErtekeles.C_TANULOID
,TanuloErtekeles.C_ERTEKELESOSZTALYZATID
,TanuloErtekeles.C_ERTEKELESSZOVEG
,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV
,TanuloErtekeles.C_ERTEKELESSZAZALEK
,TanuloErtekeles.C_ERTEKELESMODID
FROM
T_TANULOERTEKELES TanuloErtekeles
INNER JOIN T_OSZTALYCSOPORT Osztaly ON
Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
AND Osztaly.TOROLT = 'F'
AND Osztaly.C_EVFOLYAMTIPUSA = (SELECT EvfolyamTipusId FROM dbo.fnGetTanuloOsztaly(TanuloErtekeles.C_TANULOID, @pDatum))
WHERE
TanuloErtekeles.TOROLT = 'F'
AND TanuloErtekeles.C_TANTARGYID = @pTantargyId
) AS tanuloErtekeles ON
tanuloErtekeles.C_TANULOID = tanuloCsoport.C_TANULOID
LEFT JOIN @TempDictionaryItem AS ertekelesOsztalyzat ON ertekelesOsztalyzat.ID = tanuloErtekeles.C_ERTEKELESOSZTALYZATID
LEFT JOIN T_TANARIATLAGSULY tanariAtlagSuly ON
tanariAtlagSuly.C_ERTEKELESMODID = tanuloErtekeles.C_ERTEKELESMODID
AND tanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL
AND tanariAtlagSuly.TOROLT = 'F'
) AS temp
SELECT
result.*
,result2.ErtkelesMentesseg
,result2.SzovegesenErtekelheto
FROM (
SELECT
pivotErtekelesek.TanuloId ID
,pivotErtekelesek.TanuloId TanuloId
,TanuloNev TanuloNev
,TanuloNevElotagNelkul TanuloNevElotagNelkul
,AnyjaNeve AnyjaNeve
,SzuletesiIdo SzuletesiIdo
,OsztalyNev OsztalyNev
,@pTantargyId TantargyId
,[9] [09]
,[10] [10]
,[11] [11]
,[12] [12]
,[1] [01I]
,[2] [01II]
,[3] [02]
,[4] [03]
,[5] [04]
,[6] [05]
,[7] [06]
,[I] [I]
,[II] [II]
,atlag.Jegy Atlag
FROM (
SELECT DISTINCT
tempErtekeles1.TanuloId
,tempErtekeles1.TanuloNev
,tempErtekeles1.TanuloNevElotagNelkul
,tempErtekeles1.AnyjaNeve
,tempErtekeles1.SzuletesiIdo
,tempErtekeles1.OsztalyNev
,tempErtekeles1.Honap
,STUFF (
(SELECT
','
+ ISNULL(CAST(tempErtekeles2.ErtekelesOsztalyzat AS VARCHAR(1)), '')
+ ISNULL(CAST(
CASE
WHEN tempErtekeles2.ErtekelesSzoveg IS NULL OR LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(tempErtekeles2.ErtekelesSzoveg, CHAR(9), ''), CHAR(10), ''), CHAR(13), ''))) = ''
THEN NULL
ELSE
ISNULL(tempErtekeles2.ErtekelesSzovegRovidNev, 'sz')
END AS VARCHAR(3)), '')
+ ISNULL(CAST(tempErtekeles2.ErtekelesSzazalek AS VARCHAR(3)), '')
FROM
@TempTanuloErtekeles tempErtekeles2
WHERE
tempErtekeles1.TanuloId = tempErtekeles2.TanuloId AND
tempErtekeles1.Honap = tempErtekeles2.Honap
FOR XML PATH ('')
), 1, 1, ''
) TanuloErtekelesList
FROM
@TempTanuloErtekeles tempErtekeles1
) AS erdemjegyek
PIVOT (
MAX(TanuloErtekelesList)
FOR Honap
IN ([I], [II], [9] ,[10] ,[11] ,[12] ,[1] ,[2] ,[3] ,[4] ,[5] ,[6], [7])
) AS pivotErtekelesek
LEFT JOIN (
SELECT
TanuloId TanuloId
,ROUND (
SUM(CAST(ErtekelesOsztalyzat AS FLOAT) * CAST(ISNULL(Suly, 100) AS FLOAT) / 100) / SUM(CAST(ISNULL(Suly, 100) AS FLOAT) / 100), 2
) Jegy
FROM
@TempTanuloErtekeles
WHERE
TipusId = @pErtekelesTipusEvkozi
AND ErtekelesOsztalyzat IS NOT NULL
GROUP BY
TanuloId
) AS atlag ON
pivotErtekelesek.TanuloId = atlag.TanuloId
) AS result
INNER JOIN (
SELECT DISTINCT
felhasznalo.ID ID
,felhasznalo.ID TanuloId
,tanuloMentesseg.C_ERTEKELESMENTESITES ErtkelesMentesseg
,tanuloMentesseg.C_SZOVEGESENERTEKELHETO SzovegesenErtekelheto
FROM
T_TANULOCSOPORT AS tanuloCsoport
INNER JOIN T_FELHASZNALO felhasznalo ON
felhasznalo.ID = tanuloCsoport.C_TANULOID
LEFT JOIN T_TANULOMENTESSEG tanuloMentesseg ON
tanuloMentesseg.C_TANULOID = felhasznalo.ID
AND tanuloMentesseg.TOROLT = 'F'
AND tanuloMentesseg.C_TANTARGYID = @pTantargyId
AND (tanuloMentesseg.C_KEZDETE IS NULL OR tanuloMentesseg.C_KEZDETE <= @pDatum)
AND (tanuloMentesseg.C_VEGE IS NULL OR tanuloMentesseg.C_VEGE >= @pDatum)
WHERE
tanuloCsoport.TOROLT = 'F'
AND tanuloCsoport.C_OSZTALYCSOPORTID = @pOsztalyCsoportId
AND tanuloCsoport.C_BELEPESDATUM <= @pDatum
AND (tanuloCsoport.C_KILEPESDATUM IS NULL OR tanuloCsoport.C_KILEPESDATUM >= @pDatum)
) AS result2 ON
result2.TanuloId = result.TanuloId
ORDER BY
result.TanuloNevElotagNelkul
END
GO

View File

@@ -0,0 +1,254 @@
-- =============================================
-- Description: <Előszedi a magatartás/szorgalom tanuló értékeléseket, havi bontásban osztálycsoport alapján>
-- NOTE: EZT A HÁROM TÁROLT ELJÁRÁST EGYBEN KELL KEZELNI, HA MÓDOSÍTJUK!!!
-- - sp_GenerateErtekelesekTempTabla
-- - sp_GenerateErtekelesekMagatartasSzorgalomTempTabla
-- - sp_GenerateErtekelesekTempTablaByTanulo
-- =============================================
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GenerateMagatartasSzorgalomTempTabla]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GenerateMagatartasSzorgalomTempTabla]
END
GO
CREATE PROCEDURE [dbo].[sp_GenerateMagatartasSzorgalomTempTabla]
@pOsztalyCsoportId INT
,@pFelevVegeDatum DATE
,@pErtekelesTipusEvkozi INT
,@pErtekelesTipusFelevi INT
,@pErtekelesTipusEvvegi INT
,@pDatum DATE = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;
IF @pDatum IS NULL
SET @pDatum = CONVERT(DATE, GETDATE())
DECLARE @TempDictionaryItem TABLE (
ID INT PRIMARY KEY
,C_VALUE INT
,C_ORDER INT
,C_INTEZMENYID INT
,C_TANEVID INT
)
INSERT INTO @TempDictionaryItem
SELECT
ID
,C_VALUE
,C_ORDER
,C_INTEZMENYID
,C_TANEVID
FROM
T_DICTIONARYITEMBASE
WHERE
C_TYPE IN ('OsztalyzatTipus', 'MagatartasErtekelesTipus', 'SzorgalomErtekelesTipus')
AND TOROLT = 'F'
DECLARE @TempTanuloErtekeles TABLE (
ID INT
,Datum NVARCHAR(255)
,TipusId INT
,TanuloId INT
,TanuloNev NVARCHAR(255)
,TanuloNevElotagNelkul NVARCHAR(255)
,AnyjaNeve NVARCHAR(255)
,SzuletesiIdo DATE
,OsztalyNev NVARCHAR(255)
,Honap NVARCHAR(2)
,MagatartasOsztalyzat INT
,MagatartasSzoveg NVARCHAR(MAX)
,MagatartasSzovegRovidNev NVARCHAR(3)
,MagatartasErtek INT
,SzorgalomOsztalyzat INT
,SzorgalomSzoveg NVARCHAR(MAX)
,SzorgalomSzovegRovidNev NVARCHAR(3)
,SzorgalomErtek INT
)
INSERT INTO @TempTanuloErtekeles
SELECT DISTINCT *
FROM (
SELECT DISTINCT
tanuloErtekeles.ID ID
,tanuloErtekeles.C_DATUM Datum
,tanuloErtekeles.C_TIPUSID TipusId
,tanuloCsoport.C_TANULOID TanuloId
,felhasznalo.C_NYOMTATASINEV TanuloNev
,IIF(felhasznalo.C_NEVSORREND = 'T', --
felhasznalo.C_UTONEV + ' '+ felhasznalo.C_VEZETEKNEV, --
felhasznalo.C_VEZETEKNEV + ' ' + felhasznalo.C_UTONEV) TanuloNevElotagNelkul
,felhasznalo.C_ANYJANEVE AnyjaNeve
,felhasznalo.C_SZULETESIDATUM SzuletesiIdo
,osztalyCsoport.C_NEV OsztalyNev
,CASE WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusFelevi
THEN 'I'
WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusEvvegi
THEN 'II'
ELSE
CASE
WHEN CAST(tanuloErtekeles.C_DATUM AS DATE) > @pFelevVegeDatum
THEN CAST(MONTH(tanuloErtekeles.C_DATUM) + 1 AS NVARCHAR(2))
ELSE CAST(MONTH(tanuloErtekeles.C_DATUM) AS NVARCHAR(2))
END
END Honap
,magatartasOsztalyzat.C_VALUE MagatartasOsztalyzat
,tanuloErtekeles.C_MAGATARTASSZOVEG MagatartasSzoveg
,tanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV MagatartasSzovegRovidNev
,magatartasErtek.C_VALUE MagatartasErtek
,szorgalomOsztalyzat.C_VALUE SzorgalomOsztalyzat
,tanuloErtekeles.C_SZORGALOMSZOVEG SzorgalomSzoveg
,tanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV SzorgalomSzovegRovidNev
,szorgalomErtek.C_VALUE SzorgalomErtek
FROM (
SELECT
C_TANULOID
,C_OSZTALYCSOPORTID
FROM
T_TANULOCSOPORT
WHERE
TOROLT = 'F'
AND C_BELEPESDATUM <= @pDatum
AND (C_KILEPESDATUM IS NULL OR C_KILEPESDATUM >= @pDatum)
AND C_OSZTALYCSOPORTID = @pOsztalyCsoportId
) AS tanuloCsoport
INNER JOIN (
SELECT
ID
,C_NYOMTATASINEV
,C_NEVSORREND
,C_VEZETEKNEV
,C_UTONEV
,C_ANYJANEVE
,C_SZULETESIDATUM
FROM
T_FELHASZNALO
WHERE
TOROLT = 'F'
) AS felhasznalo ON
felhasznalo.ID = tanuloCsoport.C_TANULOID
LEFT JOIN
T_OSZTALYCSOPORT osztalyCsoport ON
osztalyCsoport.ID = tanuloCsoport.C_OSZTALYCSOPORTID
AND osztalyCsoport.TOROLT = 'F'
LEFT JOIN (
SELECT
TanuloErtekeles.ID
,TanuloErtekeles.C_DATUM
,TanuloErtekeles.C_TIPUSID
,TanuloErtekeles.C_TANULOID
,TanuloErtekeles.C_MAGATARTASOSZTALYZATID
,TanuloErtekeles.C_MAGATARTASSZOVEG
,TanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV
,TanuloErtekeles.C_MAGATARTASERTEKID
,TanuloErtekeles.C_SZORGALOMOSZTALYZATID
,TanuloErtekeles.C_SZORGALOMSZOVEG
,TanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV
,TanuloErtekeles.C_SZORGALOMERTEKID
FROM
T_TANULOERTEKELES TanuloErtekeles
INNER JOIN T_OSZTALYCSOPORT Osztaly ON
Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
AND Osztaly.TOROLT = 'F'
AND Osztaly.C_EVFOLYAMTIPUSA = (SELECT EvfolyamTipusId FROM dbo.fnGetTanuloOsztaly(TanuloErtekeles.C_TANULOID, @pDatum))
WHERE
TanuloErtekeles.TOROLT = 'F'
AND TanuloErtekeles.C_TANTARGYID IS NULL
) AS tanuloErtekeles ON
tanuloErtekeles.C_TANULOID = tanuloCsoport.C_TANULOID
LEFT JOIN @TempDictionaryItem AS magatartasOsztalyzat ON magatartasOsztalyzat.ID = tanuloErtekeles.C_MAGATARTASOSZTALYZATID
LEFT JOIN @TempDictionaryItem AS szorgalomOsztalyzat ON szorgalomOsztalyzat.ID = tanuloErtekeles.C_SZORGALOMOSZTALYZATID
LEFT JOIN @TempDictionaryItem AS magatartasErtek ON magatartasErtek.ID = tanuloErtekeles.C_MAGATARTASERTEKID
LEFT JOIN @TempDictionaryItem AS szorgalomErtek ON szorgalomErtek.ID = tanuloErtekeles.C_SZORGALOMERTEKID
) AS temp
SELECT *
FROM (
SELECT
pivotErtekelesek.TanuloId ID
,pivotErtekelesek.TanuloId TanuloId
,TanuloNev TanuloNev
,TanuloNevElotagNelkul TanuloNevElotagNelkul
,AnyjaNeve AnyjaNeve
,SzuletesiIdo SzuletesiIdo
,OsztalyNev OsztalyNev
,NULL TantargyId
,[9] [09]
,[10] [10]
,[11] [11]
,[12] [12]
,[1] [01I]
,[2] [01II]
,[3] [02]
,[4] [03]
,[5] [04]
,[6] [05]
,[7] [06]
,[I] [I]
,[II] [II]
,NULL Atlag
FROM (
SELECT DISTINCT
tempErtekeles1.TanuloId
,tempErtekeles1.TanuloNev
,tempErtekeles1.TanuloNevElotagNelkul
,tempErtekeles1.AnyjaNeve
,tempErtekeles1.SzuletesiIdo
,tempErtekeles1.OsztalyNev
,tempErtekeles1.Honap
,STUFF (
(SELECT
','
+ ISNULL(CAST(tempErtekeles2.MagatartasOsztalyzat AS VARCHAR(1)), '') + ','
+ ISNULL(CAST(tempErtekeles2.SzorgalomOsztalyzat AS varchar(1)), '')
+ ISNULL(CAST(
CASE
WHEN tempErtekeles2.MagatartasSzoveg IS NULL OR LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(tempErtekeles2.MagatartasSzoveg, CHAR(9), ''), CHAR(10), ''), CHAR(13), ''))) = ''
THEN NULL
ELSE
ISNULL(tempErtekeles2.MagatartasSzovegRovidNev, 'sz')
END AS VARCHAR(3)), '') + ','
+ ISNULL(CAST(
CASE
WHEN tempErtekeles2.SzorgalomSzoveg IS NULL OR LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(tempErtekeles2.SzorgalomSzoveg, CHAR(9), ''), CHAR(10), ''), CHAR(13), ''))) = ''
THEN NULL
ELSE
ISNULL(tempErtekeles2.SzorgalomSzovegRovidNev, 'sz')
END AS VARCHAR(3)), '')
+ ISNULL(CAST(tempErtekeles2.MagatartasErtek AS varchar(1)), '') + ','
+ ISNULL(CAST(tempErtekeles2.SzorgalomErtek AS varchar(1)), '')
FROM
@TempTanuloErtekeles tempErtekeles2
WHERE
tempErtekeles1.TanuloId = tempErtekeles2.TanuloId AND
tempErtekeles1.Honap = tempErtekeles2.Honap
FOR XML PATH ('')
), 1, 1, ''
) TanuloErtekelesList
FROM
@TempTanuloErtekeles tempErtekeles1
) AS erdemjegyek
PIVOT (
MAX(TanuloErtekelesList)
FOR Honap
IN ([I], [II], [9] ,[10] ,[11] ,[12] ,[1] ,[2] ,[3] ,[4] ,[5] ,[6], [7])
) AS pivotErtekelesek
) AS result
ORDER BY
result.TanuloNevElotagNelkul
END
GO