361 lines
12 KiB
Transact-SQL
361 lines
12 KiB
Transact-SQL
IF OBJECT_ID('[dbo].[sp_GenerateErtekelesekTempTablaByTanulo]') IS NOT NULL BEGIN
|
|
DROP PROCEDURE [dbo].[sp_GenerateErtekelesekTempTablaByTanulo]
|
|
END
|
|
GO
|
|
|
|
-- =============================================
|
|
-- Description: <Előszedi a tanulú értékeléseket, havi bontásban tanuló 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
|
|
-- =============================================
|
|
|
|
CREATE PROCEDURE [dbo].[sp_GenerateErtekelesekTempTablaByTanulo]
|
|
@pTanuloId INT
|
|
,@pFotargyAltargyId INT = NULL
|
|
,@pFelevVegeDatum DATE
|
|
,@pErtekelesTipusEvkozi INT
|
|
,@pErtekelesTipusFelevi INT
|
|
,@pErtekelesTipusEvvegi INT
|
|
AS
|
|
BEGIN
|
|
|
|
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
|
|
SET NOCOUNT ON;
|
|
|
|
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', 'TargyKategoriaTipus')
|
|
AND TOROLT = 'F'
|
|
|
|
DECLARE @TempTanuloErtekeles TABLE (
|
|
ID INT
|
|
,Datum NVARCHAR(255)
|
|
,TipusId INT
|
|
,Honap NVARCHAR(2)
|
|
,TanuloId INT
|
|
,Nev NVARCHAR(255)
|
|
,ErtekelesOsztalyzat INT
|
|
,ErtekelesSzoveg NVARCHAR(MAX)
|
|
,ErtekelesSzovegRovidNev NVARCHAR(3)
|
|
,ErtekelesSzazalek INT
|
|
,MagatartasOsztalyzat INT
|
|
,MagatartasSzoveg NVARCHAR(MAX)
|
|
,MagatartasSzovegRovidNev NVARCHAR(3)
|
|
,MagatartasErtek INT
|
|
,SzorgalomOsztalyzat INT
|
|
,SzorgalomSzoveg NVARCHAR(MAX)
|
|
,SzorgalomSzovegRovidNev NVARCHAR(3)
|
|
,SzorgalomErtek INT
|
|
,Suly INT
|
|
,TantargyId INT
|
|
,TantargyKategoria INT
|
|
,FotargyId INT
|
|
)
|
|
|
|
INSERT INTO @TempTanuloErtekeles (
|
|
ID
|
|
,Datum
|
|
,TipusId
|
|
,Honap
|
|
,TanuloId
|
|
,Nev
|
|
,ErtekelesOsztalyzat
|
|
,ErtekelesSzoveg
|
|
,ErtekelesSzovegRovidNev
|
|
,ErtekelesSzazalek
|
|
,MagatartasOsztalyzat
|
|
,MagatartasSzoveg
|
|
,MagatartasSzovegRovidNev
|
|
,MagatartasErtek
|
|
,SzorgalomOsztalyzat
|
|
,SzorgalomSzoveg
|
|
,SzorgalomSzovegRovidNev
|
|
,SzorgalomErtek
|
|
,Suly
|
|
,TantargyId
|
|
,TantargyKategoria
|
|
,FotargyId
|
|
)
|
|
SELECT DISTINCT *
|
|
FROM (
|
|
SELECT DISTINCT
|
|
tanuloErtekeles.ID ID
|
|
,tanuloErtekeles.C_DATUM Datum
|
|
,tanuloErtekeles.C_TIPUSID TipusId
|
|
,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
|
|
,tanuloCsoport.C_TANULOID TanuloId
|
|
,tantargy.C_NEV Nev
|
|
,ertekelesOsztalyzat.C_VALUE ErtekelesOsztalyzat
|
|
,tanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg
|
|
,tanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev
|
|
,tanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek
|
|
,NULL AS MagatartasOsztalyzat
|
|
,NULL AS MagatartasSzoveg
|
|
,NULL AS MagatartasSzovegRovidNev
|
|
,NULL AS MagatartasErtek
|
|
,NULL AS SzorgalomOsztalyzat
|
|
,NULL AS SzorgalomSzoveg
|
|
,NULL AS SzorgalomSzovegRovidNev
|
|
,NULL AS SzorgalomErtek
|
|
,tanariAtlagSuly.C_SULY Suly
|
|
,tantargy.ID TantargyId
|
|
,tantargyKategoria.C_ORDER TantargyKategoria
|
|
,tantargy.C_FOTARGYID FotargyId
|
|
FROM T_TANULOCSOPORT AS tanuloCsoport
|
|
INNER JOIN T_ORARENDIORA orarendiOra ON orarendiOra.C_OSZTALYCSOPORTID = tanulocsoport.C_OSZTALYCSOPORTID AND orarendiOra.TOROLT = 'F'
|
|
INNER JOIN dbo.fnGetKapcsolodoTantargyak(@pFotargyAltargyId) AS tantargy ON
|
|
(@pFotargyAltargyId IS NULL AND tantargy.ID = orarendiOra.C_TANTARGYID)
|
|
OR (@pFotargyAltargyId IS NOT NULL AND tantargy.ID <> @pFotargyAltargyId)
|
|
OR (tantargy.ID IN (
|
|
SELECT
|
|
C_FOTARGYID
|
|
FROM
|
|
T_TANTARGY
|
|
WHERE
|
|
ID = orarendiOra.C_TANTARGYID
|
|
AND @pFotargyAltargyId IS NULL
|
|
AND TOROLT = 'F'
|
|
)
|
|
)
|
|
LEFT JOIN @TempDictionaryItem AS tantargyKategoria ON tantargyKategoria.ID = tantargy.C_TARGYKATEGORIA
|
|
LEFT JOIN T_TANULOERTEKELES tanuloErtekeles
|
|
ON tanuloErtekeles.C_TANULOID = @pTanuloId
|
|
AND tanuloErtekeles.C_TANTARGYID = tantargy.ID
|
|
AND tanuloErtekeles.TOROLT = 'F'
|
|
AND tanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F'
|
|
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'
|
|
WHERE tanuloCsoport.TOROLT = 'F'
|
|
AND tanuloCsoport.C_TANULOID = @pTanuloId
|
|
) AS temp
|
|
|
|
IF @pFotargyAltargyId IS NULL BEGIN
|
|
|
|
INSERT INTO @TempTanuloErtekeles (
|
|
ID
|
|
,Datum
|
|
,TipusId
|
|
,Honap
|
|
,TanuloId
|
|
,Nev
|
|
,ErtekelesOsztalyzat
|
|
,ErtekelesSzoveg
|
|
,ErtekelesSzovegRovidNev
|
|
,ErtekelesSzazalek
|
|
,MagatartasOsztalyzat
|
|
,MagatartasSzoveg
|
|
,MagatartasSzovegRovidNev
|
|
,MagatartasErtek
|
|
,SzorgalomOsztalyzat
|
|
,SzorgalomSzoveg
|
|
,SzorgalomSzovegRovidNev
|
|
,SzorgalomErtek
|
|
,Suly
|
|
,TantargyId
|
|
,TantargyKategoria
|
|
,FotargyId
|
|
)
|
|
SELECT DISTINCT
|
|
tanuloErtekeles.ID ID
|
|
,tanuloErtekeles.C_DATUM Datum
|
|
,tanuloErtekeles.C_TIPUSID TipusId
|
|
,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
|
|
,tanuloErtekeles.C_TANULOID TanuloId
|
|
,'Magatartás/Szorgalom' Nev
|
|
,NULL AS ErtekelesOsztalyzat
|
|
,NULL AS ErtekelesSzoveg
|
|
,NULL AS ErtekelesSzovegRovidNev
|
|
,NULL AS ErtekelesSzazalek
|
|
,magatartasOsztalyzat.C_VALUE AS MagatartasOsztalyzat
|
|
,tanuloErtekeles.C_MAGATARTASSZOVEG AS MagatartasSzoveg
|
|
,tanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV AS MagatartasSzovegRovidNev
|
|
,magatartasErtek.C_VALUE AS MagatartasErtek
|
|
,szorgalomOsztalyzat.C_VALUE AS SzorgalomOsztalyzat
|
|
,tanuloErtekeles.C_SZORGALOMSZOVEG AS SzorgalomSzoveg
|
|
,tanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV AS SzorgalomSzovegRovidNev
|
|
,szorgalomErtek.C_VALUE AS SzorgalomErtek
|
|
,100 AS Suly
|
|
,0 AS TantargyId
|
|
,0 AS TantargyKategoria
|
|
,NULL AS FotargyId
|
|
FROM T_TANULOERTEKELES tanuloErtekeles
|
|
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
|
|
WHERE tanuloErtekeles.C_TANULOID = @pTanuloId
|
|
AND tanuloErtekeles.TOROLT = 'F'
|
|
AND tanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'T'
|
|
END
|
|
|
|
SELECT
|
|
result.ID
|
|
,Nev
|
|
,[09]
|
|
,[10]
|
|
,[11]
|
|
,[12]
|
|
,[01I]
|
|
,[01II]
|
|
,[02]
|
|
,[03]
|
|
,[04]
|
|
,[05]
|
|
,[06]
|
|
,[I]
|
|
,[II]
|
|
,Atlag
|
|
,TantargyKategoria
|
|
,FotargyId
|
|
FROM (
|
|
SELECT
|
|
pivotErtekelesek.TantargyId ID
|
|
,Nev Nev
|
|
,[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
|
|
,pivotErtekelesek.TantargyKategoria TantargyKategoria
|
|
,pivotErtekelesek.FotargyId FotargyId
|
|
FROM (
|
|
SELECT DISTINCT
|
|
tempErtekeles1.Nev
|
|
,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)), '')
|
|
+ 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.TantargyId = tempErtekeles2.TantargyId
|
|
AND tempErtekeles1.Honap = tempErtekeles2.Honap
|
|
FOR XML PATH ('')
|
|
), 1, 1, ''
|
|
) TanuloErtekelesList
|
|
,tempErtekeles1.Honap
|
|
,tempErtekeles1.TanuloId
|
|
,tempErtekeles1.TantargyId
|
|
,tempErtekeles1.TantargyKategoria
|
|
,tempErtekeles1.FotargyId
|
|
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
|
|
TantargyId TantargyId
|
|
,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
|
|
TantargyId
|
|
) AS atlag ON
|
|
pivotErtekelesek.TantargyId = atlag.TantargyId
|
|
) AS result
|
|
LEFT JOIN
|
|
T_TANTARGY fotargy ON
|
|
result.FotargyId = fotargy.ID
|
|
LEFT JOIN @TempDictionaryItem targykategoria
|
|
ON targykategoria.ID = fotargy.C_TARGYKATEGORIA
|
|
AND targykategoria.C_INTEZMENYID = fotargy.C_INTEZMENYID
|
|
AND targykategoria.C_TANEVID = fotargy.C_TANEVID
|
|
ORDER BY
|
|
CASE WHEN result.FotargyId IS NULL THEN result.TantargyKategoria ELSE ISNULL(targykategoria.C_ORDER, 10000) END
|
|
,ISNULL(fotargy.C_NEV, result.Nev)
|
|
,ISNULL(result.FotargyId, result.ID)
|
|
,result.FotargyId
|
|
,result.Nev
|
|
|
|
IF OBJECT_ID('tempdb..#TempDictionaryItem') IS NOT NULL DROP TABLE #TempDictionaryItem
|
|
IF OBJECT_ID('tempdb..#TempTanuloErtekeles') IS NOT NULL DROP TABLE #TempTanuloErtekeles
|
|
|
|
END
|
|
|
|
|
|
GO
|
|
|