279 lines
8.6 KiB
Transact-SQL
279 lines
8.6 KiB
Transact-SQL
-- =============================================
|
|
-- 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
|
|
|
|
|