kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20180123170715_KRETA_150_3/sp_GenerateErtekelesekTempTabla.sql
2024-03-13 00:33:46 +01:00

248 lines
6.9 KiB
Transact-SQL

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
-- =============================================
-- 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
-- =============================================
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 = 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
,Honap NVARCHAR(2)
,TanuloId INT
,Nev NVARCHAR(255)
,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
,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
,felhasznalo.C_NYOMTATASINEV Nev
,ertekelesOsztalyzat.C_VALUE ErtekelesOsztalyzat
,tanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg
,tanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev
,tanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek
,tanariAtlagSuly.C_SULY Suly
FROM (
SELECT
C_TANULOID
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
FROM
T_FELHASZNALO
WHERE
TOROLT = 'F'
) AS felhasznalo ON
felhasznalo.ID = tanuloCsoport.C_TANULOID
LEFT JOIN (
SELECT
ID
,C_DATUM
,C_TIPUSID
,C_TANULOID
,C_ERTEKELESOSZTALYZATID
,C_ERTEKELESSZOVEG
,C_ERTEKELESSZOVEGROVIDNEV
,C_ERTEKELESSZAZALEK
,C_ERTEKELESMODID
FROM
T_TANULOERTEKELES
WHERE
TOROLT = 'F'
AND 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
,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
,@pTantargyId TantargyId
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)), '')
FROM
@TempTanuloErtekeles tempErtekeles2
WHERE
tempErtekeles1.TanuloId = tempErtekeles2.TanuloId AND
tempErtekeles1.Honap = tempErtekeles2.Honap
FOR XML PATH ('')
), 1, 1, ''
) TanuloErtekelesList
,tempErtekeles1.Honap
,tempErtekeles1.TanuloId
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
,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.ID = result.ID
ORDER BY
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