kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20190723161145_DB_386/uspGetTanuloErtekelesDataSetByTantargy.sql
2024-03-13 00:33:46 +01:00

107 lines
5.2 KiB
Transact-SQL

-- =============================================
-- Description: <Előszedjük a tanuló értékeléseket tantárgy alapján>
-- =============================================
DROP PROCEDURE IF EXISTS [dbo].[uspGetTanuloErtekelesDataSetByTantargy]
GO
CREATE PROCEDURE [dbo].[uspGetTanuloErtekelesDataSetByTantargy]
@pIntezmenyId int
,@pTanevId int
,@pTanarId int
,@pTantargyId int
,@pOsztalyCsoportId int
,@pDatum date = NULL
AS
BEGIN
SET NOCOUNT ON;
IF @pDatum IS NULL BEGIN
SET @pDatum = GETDATE()
END
CREATE TABLE #TanuloOsztalyEvfolyamTipusIdList(
TanuloId INT PRIMARY KEY
,EvfolyamTipusId INT
)
INSERT INTO #TanuloOsztalyEvfolyamTipusIdList
SELECT
TanuloId
,EvfolyamTipusId
FROM dbo.fnGetOsztalyCsoportTanuloOsztalyList(@pIntezmenyId, @pTanevId, @pOsztalyCsoportId, @pDatum)
CREATE TABLE #Mentessegek (
TanuloId int
,C_MENTESSEGOKA nvarchar(max)
,C_ERTEKELESMENTESITES char(1)
,C_SZOVEGESENERTEKELHETO char(1)
,rn int
)
INSERT INTO #Mentessegek (
TanuloId
,C_MENTESSEGOKA
,C_ERTEKELESMENTESITES
,C_SZOVEGESENERTEKELHETO
,rn
) SELECT
C_TANULOID
,C_MENTESSEGOKA
,C_ERTEKELESMENTESITES
,C_SZOVEGESENERTEKELHETO
,ROW_NUMBER() OVER (PARTITION BY C_TANULOID ORDER BY C_KEZDETE DESC) rn
FROM T_TANULOMENTESSEG_OSSZES
WHERE TOROLT='F' AND C_TANTARGYID = @pTantargyId AND ((C_KEZDETE IS NULL OR C_KEZDETE <= @pDatum) AND (C_VEGE IS NULL OR C_VEGE <= @pDatum))
SELECT
FelhasznaloTanulo.ID as TanuloId
,@pTantargyId as TantargyId
,FelhasznaloTanulo.C_NYOMTATASINEV as TanuloNev
,IIF(FelhasznaloTanulo.C_NEVSORREND = 'T',
FelhasznaloTanulo.C_UTONEV + ' '+ FelhasznaloTanulo.C_VEZETEKNEV,
FelhasznaloTanulo.C_VEZETEKNEV + ' ' + FelhasznaloTanulo.C_UTONEV) as TanuloNevElotagNelkul
,FelhasznaloTanulo.C_ANYJANEVE as AnyjaNeve
,FelhasznaloTanulo.C_SZULETESIDATUM as SzuletesiIdo
,OsztalyCsoport.C_NEV as OsztalyNev
,TanuloMentesseg.C_MENTESSEGOKA as MentessegOka
,TanuloMentesseg.C_ERTEKELESMENTESITES as ErtkelesMentesseg
,TanuloMentesseg.C_SZOVEGESENERTEKELHETO as SzovegesenErtekelheto
,TanuloErtekeles.ID as ID
,TanuloErtekeles.C_DATUM as Datum
,TanuloErtekeles.C_ROGZITESDATUM as RogzitesDatum
,TanuloErtekeles.C_TIPUSID as TipusId
,TanuloErtekeles.C_NYOMTATASINEV as ErtekeloNyomtatasiNev
,IIF(TanuloErtekeles.C_ERTEKELOID = @pTanarId,'T','F') as Modosithato
,TanuloErtekeles.C_ROGZITESDATUM as Created
,TanuloErtekeles.C_ISMAGATARTASSZORGALOM as IsMagatartasSzorgalom
,TanuloErtekeles.C_ISERTESITESELKULDVE as IsErtesitesElkuldve
,TanuloErtekeles.C_ERTEKELESOSZTALYZATID as ErtekelesOsztalyzatId
,TanariAtlagSuly.C_SULY as Suly
,TanuloErtekeles.C_ERTEKELESSZOVEG as ErtekelesSzoveg
,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV as ErtekelesSzovegRovidNev
,TanuloErtekeles.C_ERTEKELESSZAZALEK as ErtekelesSzazalek
,TanuloErtekeles.C_ERTEKELESMODID as ErtekelesModId
,TanuloErtekeles.C_ERTEKELESTEMA as ErtekelesTema
FROM T_TANULOCSOPORT_OSSZES TanuloCsoport --NOTE: Azért TanuloCsoport-ból indul ki, mert a tanulókat akkor is meg kell jeleníteni, ha nincs értékelésük
INNER JOIN T_FELHASZNALO_OSSZES FelhasznaloTanulo ON FelhasznaloTanulo.TOROLT = 'F' AND FelhasznaloTanulo.ID = TanuloCsoport.C_TANULOID
INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.TOROLT = 'F' AND OsztalyCsoport.ID = TanuloCsoport.C_OSZTALYCSOPORTID
LEFT JOIN(
SELECT TanuloErtekeles.*, FelhasznaloErtekelo.C_NYOMTATASINEV
FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles
INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.TOROLT = 'F' AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID
INNER JOIN T_FELHASZNALO_OSSZES FelhasznaloErtekelo ON FelhasznaloErtekelo.TOROLT = 'F' AND FelhasznaloErtekelo.ID = TanuloErtekeles.C_ERTEKELOID
INNER JOIN #TanuloOsztalyEvfolyamTipusIdList Evfolyam ON Evfolyam.TanuloId = TanuloErtekeles.C_TANULOID AND Evfolyam.EvfolyamTipusId = Osztaly.C_EVFOLYAMTIPUSA
WHERE TanuloErtekeles.TOROLT = 'F' AND TanuloErtekeles.C_TANTARGYID = @pTantargyId
UNION ALL
SELECT TanuloErtekeles.*,FelhasznaloErtekelo.C_NYOMTATASINEV
FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles
INNER JOIN T_FELHASZNALO_OSSZES FelhasznaloErtekelo ON FelhasznaloErtekelo.TOROLT = 'F' AND FelhasznaloErtekelo.ID = TanuloErtekeles.C_ERTEKELOID
WHERE TanuloErtekeles.TOROLT = 'F' AND TanuloErtekeles.C_TANTARGYID = @pTantargyId AND TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID IS NULL
) AS TanuloErtekeles ON TanuloErtekeles.C_TANULOID = TanuloCsoport.C_TANULOID
LEFT JOIN T_TANARIATLAGSULY_OSSZES TanariAtlagSuly ON TanariAtlagSuly.TOROLT = 'F'
AND TanariAtlagSuly.C_ERTEKELESMODID = TanuloErtekeles.C_ERTEKELESMODID AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F' AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL
LEFT JOIN #Mentessegek TanuloMentesseg ON TanuloMentesseg.TanuloId = FelhasznaloTanulo.ID AND TanuloMentesseg.rn = 1
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)
END
GO