kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20190718144553_DB_866/uspGetBukasraAlloTanulok.sql
2024-03-13 00:33:46 +01:00

274 lines
No EOL
7.3 KiB
Transact-SQL

DROP PROCEDURE IF EXISTS uspGetBukasraAlloTanulok
GO
CREATE PROCEDURE uspGetBukasraAlloTanulok
@pIntezmenyId int
,@pTanevId int
,@pOsztalyCsoportIdXML XML = NULL
AS
BEGIN
DECLARE @ocsId int
DECLARE @OsztalyCsoport TABLE(Id int)
IF @pOsztalyCsoportIdXML IS NOT NULL
BEGIN
INSERT INTO @OsztalyCsoport(Id)
SELECT Data FROM fnConvertXmlIntListToTable(@pOsztalyCsoportIdXML, 'a', 'b')
END
ELSE BEGIN
INSERT INTO @OsztalyCsoport
SELECT osztalyok.OsztalyId FROM fnGetDokumentumOsztalyokTanevenkent (@pTanevId) osztalyok
END
DECLARE ocsCur CURSOR FOR
SELECT DISTINCT k.ID FROM @OsztalyCsoport ocs
CROSS APPLY fnGetKapcsolodoOsztalycsoportok(ocs.ID, DEFAULT) k
CREATE TABLE #ErtekelesTemp
(
[OMKod] NVARCHAR(MAX)
,[SzulHelyIdoAnyjaNeve] NVARCHAR(MAX)
,[TanuloNev] NVARCHAR(MAX)
,[OsztalyCsoportNev] NVARCHAR(MAX)
,[TantargyNev] NVARCHAR(MAX)
,[Atlag] DECIMAL(10,2)
,[TanarNeve] NVARCHAR(MAX)
)
CREATE TABLE #CsoportNevek (OsztalyCsoportNeve nvarchar(200))
CREATE TABLE #OsszErtekeles
(
ErtekelesId INT NOT NULL,
Datum DATE,
TipusId INT,
ErtekelesSzoveg NVARCHAR(MAX),
ErtekelesSzovegRovidNev NVARCHAR(3),
ErtekelesOsztalyzatId INT,
ErtekelesOsztalyzatValue INT,
ErtekelesOsztalyzatNev NVARCHAR(MAX),
ErtekelesSzazalek NVARCHAR(MAX),
MagatartasOsztalyzatId INT,
MagatartasOsztalyzatValue INT,
MagatartasOsztalyzatNev NVARCHAR(MAX),
MagatartasSzoveg NVARCHAR(MAX),
MagatartasSzovegRovidNev NVARCHAR(3),
MagatartasErtekId INT,
MagatartasErtek NVARCHAR(MAX),
MagatartasErtekOsztalyzatkent INT,
SzorgalomOsztalyzatId INT,
SzorgalomOsztalyzatValue INT,
SzorgalomOsztalyzatNev NVARCHAR(MAX),
SzorgalomSzoveg NVARCHAR(MAX),
SzorgalomSzovegRovidNev NVARCHAR(3),
SzorgalomErtekId INT,
SzorgalomErtek NVARCHAR(MAX),
SzorgalomErtekOsztalyzatkent INT,
TanuloId INT,
TanuloCsoportId INT,
OsztalyCsoportId INT,
TantargyId INT,
TantargyNevZarojellel NVARCHAR(MAX),
TantargyNevNyomtatvanyban NVARCHAR(MAX),
TantargyNev NVARCHAR(MAX),
TantargyAngolNev NVARCHAR(MAX),
TantargyNemetNev NVARCHAR(MAX),
TargyKategoriaId INT,
FotargyE CHAR(1),
Altantargy CHAR(1),
FotargyId INT,
ErtekelesTema NVARCHAR(MAX),
ErtekeloId INT,
ErtekelesModjaId INT,
IsMagatartasSzorgalom CHAR(1),
Jeloles NVARCHAR(MAX),
JelolesAndErtekelesTema NVARCHAR(MAX),
RogzitesDatum DATE
)
OPEN ocsCur
FETCH NEXT FROM ocsCur INTO @ocsId
WHILE @@FETCH_STATUS = 0
BEGIN
TRUNCATE TABLE #OsszErtekeles
INSERT INTO #OsszErtekeles
(
ErtekelesId
,Datum
,TipusId
,ErtekelesSzoveg
,ErtekelesSzovegRovidNev
,ErtekelesOsztalyzatId
,ErtekelesOsztalyzatValue
,ErtekelesOsztalyzatNev
,ErtekelesSzazalek
,MagatartasOsztalyzatId
,MagatartasOsztalyzatValue
,MagatartasOsztalyzatNev
,MagatartasSzoveg
,MagatartasSzovegRovidNev
,MagatartasErtekId
,MagatartasErtek
,MagatartasErtekOsztalyzatkent
,SzorgalomOsztalyzatId
,SzorgalomOsztalyzatValue
,SzorgalomOsztalyzatNev
,SzorgalomSzoveg
,SzorgalomSzovegRovidNev
,SzorgalomErtekId
,SzorgalomErtek
,SzorgalomErtekOsztalyzatkent
,TanuloId
,TanuloCsoportId
,OsztalyCsoportId
,TantargyId
,TantargyNevZarojellel
,TantargyNevNyomtatvanyban
,TantargyNev
,TantargyAngolNev
,TantargyNemetNev
,TargyKategoriaId
,FotargyE
,Altantargy
,FotargyId
,ErtekelesTema
,ErtekeloId
,ErtekelesModjaId
,IsMagatartasSzorgalom
,Jeloles
,JelolesAndErtekelesTema
,RogzitesDatum
)
SELECT
ErtekelesId
,Datum
,TipusId
,ErtekelesSzoveg
,ErtekelesSzovegRovidNev
,ErtekelesOsztalyzatId
,ErtekelesOsztalyzatValue
,ErtekelesOsztalyzatNev
,ErtekelesSzazalek
,MagatartasOsztalyzatId
,MagatartasOsztalyzatValue
,MagatartasOsztalyzatNev
,MagatartasSzoveg
,MagatartasSzovegRovidNev
,MagatartasErtekId
,MagatartasErtek
,MagatartasErtekOsztalyzatkent
,SzorgalomOsztalyzatId
,SzorgalomOsztalyzatValue
,SzorgalomOsztalyzatNev
,SzorgalomSzoveg
,SzorgalomSzovegRovidNev
,SzorgalomErtekId
,SzorgalomErtek
,SzorgalomErtekOsztalyzatkent
,TanuloId
,TanuloCsoportId
,OsztalyCsoportId
,TantargyId
,TantargyNevZarojellel
,TantargyNevNyomtatvanyban
,TantargyNev
,TantargyAngolNev
,TantargyNemetNev
,TargyKategoriaId
,FotargyE
,Altantargy
,FotargyId
,ErtekelesTema
,ErtekeloId
,ErtekelesModjaId
,IsMagatartasSzorgalom
,Jeloles
,JelolesAndErtekelesTema
,RogzitesDatum
FROM [fnGetDokumentumErtekelesekOsztalyonkent] (@pTanevId, @ocsId, 1518, DEFAULT, 1, DEFAULT, 1)
TRUNCATE TABLE #ErtekelesTemp
INSERT INTO #ErtekelesTemp
(
[OMKod]
,[SzulHelyIdoAnyjaNeve]
,[TanuloNev]
,[OsztalyCsoportNev]
,[TantargyNev]
,[Atlag]
,[TanarNeve]
)
SELECT
tanulo.C_OKTATASIAZONOSITO AS OMKod
,tanulo.C_SZULETESIHELY + ', ' + CAST(FORMAT(tanulo.C_SZULETESIDATUM, 'yyyy.MM.dd.') AS nvarchar(200)) + ', '+ tanulo.C_ANYJANEVE AS SzulHelyIdoAnyjaNeve
,tanulo.C_NYOMTATASINEV AS TanuloNev
,osztalyCsoport.C_NEV AS OsztalyCsoportNev
,ertekeles.TantargyNev AS TantargyNev
,ROUND(SUM(CAST(ertekeles.ErtekelesOsztalyzatValue AS FLOAT) * CAST(ISNULL(tanariAtlagSuly.C_SULY, 100) AS FLOAT) / 100) / SUM(CAST(ISNULL(tanariAtlagSuly.C_SULY, 100) AS FLOAT) / 100), 2) AS Atlag
,STUFF((
SELECT DISTINCT ', ' + f.C_NYOMTATASINEV
FROM #OsszErtekeles
INNER JOIN T_FELHASZNALO_OSSZES AS f ON f.ID = #OsszErtekeles.ErtekeloId AND f.C_TANEVID = @pTanevId
WHERE (TantargyId = ertekeles.TantargyId) AND (TanuloId = ertekeles.TanuloId)
FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)'), 1, 2, '') AS TanarNeve
FROM
#OsszErtekeles ertekeles
LEFT JOIN T_TANARIATLAGSULY tanariAtlagSuly ON
tanariAtlagSuly.C_TANEVID = @pTanevId
AND tanariAtlagSuly.TOROLT = 'F'
AND tanariAtlagSuly.C_ERTEKELESMODID = ertekeles.ErtekelesModjaId
INNER JOIN T_OSZTALYCSOPORT_OSSZES osztalyCsoport ON
osztalyCsoport.C_TANEVID = @pTanevId
AND osztalyCsoport.TOROLT = 'F'
AND osztalyCsoport.ID = ertekeles.OsztalyCsoportId
INNER JOIN T_FELHASZNALO_OSSZES tanulo ON
tanulo.C_TANEVID = @pTanevId
AND tanulo.TOROLT = 'F'
AND tanulo.ID = ertekeles.TanuloId
WHERE
ertekeles.ErtekelesOsztalyzatValue IS NOT NULL
GROUP BY
tanulo.C_OKTATASIAZONOSITO
,tanulo.C_SZULETESIHELY
,tanulo.C_SZULETESIDATUM
,tanulo.C_ANYJANEVE
,tanulo.C_NYOMTATASINEV
,osztalyCsoport.C_NEV
,ertekeles.TantargyNev
,ertekeles.TantargyId
,ertekeles.TanuloId
HAVING
ROUND(SUM(CAST(ertekeles.ErtekelesOsztalyzatValue AS FLOAT) * CAST(ISNULL(tanariAtlagSuly.C_SULY, 100) AS FLOAT) / 100) / SUM(CAST(ISNULL(tanariAtlagSuly.C_SULY, 100) AS FLOAT) / 100), 2) < 2
IF EXISTS(SELECT 1 FROM #ErtekelesTemp)
BEGIN
SELECT
tmp.OMKod
,tmp.SzulHelyIdoAnyjaNeve
,tmp.TanuloNev
,tmp.OsztalyCsoportNev
,tmp.TantargyNev
,tmp.Atlag
,tmp.TanarNeve
FROM #ErtekelesTemp tmp ORDER BY [TanuloNev],[TantargyNev]
INSERT INTO #CsoportNevek (OsztalyCsoportNeve)
SELECT top 1 [OsztalyCsoportNev] FROM #ErtekelesTemp
END
FETCH NEXT FROM ocsCur INTO @ocsId
END
CLOSE ocsCur
DEALLOCATE ocsCur
SELECT * FROM #CsoportNevek
DROP TABLE #ErtekelesTemp
DROP TABLE #CsoportNevek
DROP TABLE #OsszErtekeles
END
GO