-- ============================================= -- Description: -- ============================================= SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO 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 added to prevent extra result sets from interfering with SELECT statements. SET NOCOUNT ON; IF @pDatum IS NULL SET @pDatum = CONVERT(DATE, GETDATE()) CREATE TABLE #TanuloOsztalyEvfolyamTipusIdList( TanuloId INT PRIMARY KEY ,EvfolyamTipusId INT ) INSERT INTO #TanuloOsztalyEvfolyamTipusIdList SELECT TanuloId ,EvfolyamTipusId FROM dbo.fnGetOsztalyCsoportTanuloOsztalyList(@pIntezmenyId, @pTanevId, @pOsztalyCsoportId, @pDatum) /*TODO:Tobb Osztaly*//*OM-1648*/ SELECT FelhasznaloTanulo.ID TanuloId ,@pTantargyId TantargyId ,FelhasznaloTanulo.C_NYOMTATASINEV TanuloNev ,IIF(FelhasznaloTanulo.C_NEVSORREND = 'T', -- FelhasznaloTanulo.C_UTONEV + ' '+ FelhasznaloTanulo.C_VEZETEKNEV, -- FelhasznaloTanulo.C_VEZETEKNEV + ' ' + FelhasznaloTanulo.C_UTONEV) TanuloNevElotagNelkul ,FelhasznaloTanulo.C_ANYJANEVE AnyjaNeve ,FelhasznaloTanulo.C_SZULETESIDATUM SzuletesiIdo ,OsztalyCsoport.C_NEV OsztalyNev ,TanuloMentesseg.C_MENTESSEGOKA MentessegOka ,TanuloMentesseg.C_ERTEKELESMENTESITES ErtkelesMentesseg ,TanuloMentesseg.C_SZOVEGESENERTEKELHETO SzovegesenErtekelheto ,TanuloErtekeles.ID ID ,TanuloErtekeles.C_DATUM Datum ,TanuloErtekeles.C_ROGZITESDATUM RogzitesDatum ,TanuloErtekeles.C_TIPUSID TipusId ,FelhasznaloErtekelo.C_NYOMTATASINEV ErtekeloNyomtatasiNev ,IIF(TanuloErtekeles.ID IS NULL, -- NULL, -- CASE -- WHEN TanuloErtekeles.C_ERTEKELOID = @pTanarId -- THEN 'T' -- ELSE 'F' -- END -- ) Modosithato ,TanuloErtekeles.CREATED Created ,TanuloErtekeles.C_ISMAGATARTASSZORGALOM IsMagatartasSzorgalom ,TanuloErtekeles.C_ISERTESITESELKULDVE IsErtesitesElkuldve ,TanuloErtekeles.C_ERTEKELESOSZTALYZATID ErtekelesOsztalyzatId ,TanariAtlagSuly.C_SULY Suly ,TanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg ,TanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev ,TanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek ,TanuloErtekeles.C_ERTEKELESMODID ErtekelesModId ,TanuloErtekeles.C_ERTEKELESTEMA 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.C_INTEZMENYID = TanuloCsoport.C_INTEZMENYID AND FelhasznaloTanulo.C_TANEVID = TanuloCsoport.C_TANEVID AND FelhasznaloTanulo.TOROLT = 'F' AND FelhasznaloTanulo.ID = TanuloCsoport.C_TANULOID INNER JOIN T_OSZTALYCSOPORT_OSSZES OsztalyCsoport ON OsztalyCsoport.C_INTEZMENYID = TanuloCsoport.C_INTEZMENYID AND OsztalyCsoport.C_TANEVID = TanuloCsoport.C_TANEVID AND OsztalyCsoport.TOROLT = 'F' AND OsztalyCsoport.ID = TanuloCsoport.C_OSZTALYCSOPORTID LEFT JOIN( SELECT TanuloErtekeles.* FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles INNER JOIN T_OSZTALYCSOPORT_OSSZES Osztaly ON Osztaly.C_INTEZMENYID = TanuloErtekeles.C_INTEZMENYID AND Osztaly.C_TANEVID = TanuloErtekeles.C_TANEVID AND Osztaly.TOROLT = 'F' AND Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID AND Osztaly.C_EVFOLYAMTIPUSA = (SELECT EvfolyamTipusId FROM #TanuloOsztalyEvfolyamTipusIdList WHERE TanuloId = TanuloErtekeles.C_TANULOID) WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND TanuloErtekeles.TOROLT = 'F' AND TanuloErtekeles.C_TANTARGYID = @pTantargyId -- NOTE: Ami-s értékelésnél a C_ROGZITESKORITANULOOSZTALYID null, ezeket mindig meg kell jeleníteni UNION ALL SELECT TanuloErtekeles.* FROM T_TANULOERTEKELES_OSSZES TanuloErtekeles WHERE TanuloErtekeles.C_INTEZMENYID = @pIntezmenyId AND TanuloErtekeles.C_TANEVID = @pTanevId AND 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_FELHASZNALO_OSSZES FelhasznaloErtekelo ON FelhasznaloErtekelo.C_INTEZMENYID = TanuloCsoport.C_INTEZMENYID AND FelhasznaloErtekelo.C_TANEVID = TanuloCsoport.C_TANEVID AND FelhasznaloErtekelo.TOROLT = 'F' AND FelhasznaloErtekelo.ID = TanuloErtekeles.C_ERTEKELOID LEFT JOIN T_TANARIATLAGSULY_OSSZES TanariAtlagSuly ON TanariAtlagSuly.C_INTEZMENYID = TanuloCsoport.C_INTEZMENYID AND TanariAtlagSuly.C_TANEVID = TanuloCsoport.C_TANEVID AND TanariAtlagSuly.TOROLT = 'F' AND TanariAtlagSuly.C_ERTEKELESMODID = TanuloErtekeles.C_ERTEKELESMODID AND TanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F' AND TanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL --NOTE: Azért kell a subselect, mert lehetnek párhuzamosan is mentességek, de nekünk csak az utolsó kell C_KEZDETE alapján. OUTER APPLY( SELECT TOP 1 TanuloMentesseg.C_ERTEKELESMENTESITES ,TanuloMentesseg.C_SZOVEGESENERTEKELHETO ,TanuloMentesseg.C_TANULOID ,TanuloMentesseg.C_MENTESSEGOKA FROM T_TANULOMENTESSEG_OSSZES TanuloMentesseg WHERE TanuloMentesseg.C_INTEZMENYID = TanuloCsoport.C_INTEZMENYID AND TanuloMentesseg.C_TANEVID = TanuloCsoport.C_TANEVID AND TanuloMentesseg.TOROLT = 'F' AND TanuloMentesseg.C_TANULOID = FelhasznaloTanulo.ID 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) ORDER BY TanuloMentesseg.C_KEZDETE DESC ) AS TanuloMentesseg WHERE TanuloCsoport.C_INTEZMENYID = @pIntezmenyId AND TanuloCsoport.C_TANEVID = @pTanevId AND 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