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

171 lines
6.7 KiB
Transact-SQL

-- =============================================
-- Description: <Előszedjük a tanuló értékeléseket tantárgy alapján>
-- =============================================
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