-- ============================================= -- Description: -- ============================================= 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