SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF OBJECT_ID('fnGetDokumentumErtekelesekOsztalyonkent') IS NOT NULL BEGIN DROP FUNCTION fnGetDokumentumErtekelesekOsztalyonkent END GO CREATE FUNCTION fnGetDokumentumErtekelesekOsztalyonkent (@tanevId INT, @osztalyCsoportId INT, @ertekelesTipusa INT = NULL, @csakTanorai BIT = 1, @csakKivlasztottOsztalyCsoport BIT = 0, @atsoroltTanuloErtekelesek INT = 0) RETURNS @retTanuloErtekeles TABLE ( 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), 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) ) AS BEGIN INSERT INTO @retTanuloErtekeles SELECT DISTINCT [tanuloErtekeles].[ID] [ErtekelesId], [tanuloErtekeles].[C_DATUM] [Datum], [tanuloErtekeles].[C_TIPUSID] [TipusId], [tanuloErtekeles].[C_ERTEKELESSZOVEG] [ErtekelesSzoveg], [tanuloErtekeles].[C_ERTEKELESSZOVEGROVIDNEV] [ErtekelesSzovegRovidNev], [tanuloErtekeles].[C_ERTEKELESOSZTALYZATID] [ErtekelesOsztalyzatId], [ertekelesOsztalyzat].[C_VALUE] [ErtekelesOsztalyzatValue], [ertekelesOsztalyzat].[C_NAME] [ErtekelesOsztalyzatNev], IIF([tanuloErtekeles].[C_ERTEKELESSZAZALEK] IS NOT NULL -- , CONVERT(NVARCHAR(3), [tanuloErtekeles].[C_ERTEKELESSZAZALEK])+'%' -- , NULL) [ErtekelesSzazalek], [tanuloErtekeles].[C_MAGATARTASOSZTALYZATID] [MagatartasOsztalyzatId], [magatartasOsztalyzat].[C_VALUE] [MagatartasOsztalyzatValue], [magatartasOsztalyzat].[C_NAME] [MagatartasOsztalyzatNev], [tanuloErtekeles].[C_MAGATARTASSZOVEG] [MagatartasSzoveg], [tanuloErtekeles].[C_MAGATARTASSZOVEGROVIDNEV] [MagatartasSzovegRovidNev], [tanuloErtekeles].[C_MAGATARTASERTEKID] [MagatartasErtekId], [magatartasErtek].[C_NAME] [MagatartasErtek], [magatartasErtek].[C_VALUE] + 1 [MagatartasErtekOsztalyzatkent], [tanuloErtekeles].[C_SZORGALOMOSZTALYZATID] [SzorgalomOsztalyzatId], [szorgalomOsztalyzat].[C_VALUE] [SzorgalomOsztalyzatValue], [szorgalomOsztalyzat].[C_NAME] [SzorgalomOsztalyzatNev], [tanuloErtekeles].[C_SZORGALOMSZOVEG] [SzorgalomSzoveg], [tanuloErtekeles].[C_SZORGALOMSZOVEGROVIDNEV] [SzorgalomSzovegRovidNev], [tanuloErtekeles].[C_SZORGALOMERTEKID] [SzorgalomErtekId], [szorgalomErtek].[C_NAME] [SzorgalomErtek], [szorgalomErtek].[C_VALUE] + 1 [SzorgalomErtekOsztalyzatkent], [tanuloErtekeles].[C_TANULOID] [TanuloId], TanuloCsoportId, [tanuloErtekeles].[C_OSZTALYCSOPORTID] [OsztalyCsoportId], [tanuloErtekeles].[C_TANTARGYID] [TantargyId], IIF([tantargy].[C_NEV] <> [tantargy].[C_NEVNYOMTATVANYBAN] AND [tantargy].[C_NEVNYOMTATVANYBAN] IS NOT NULL -- , [C_NEVNYOMTATVANYBAN]+' ('+[tantargy].[C_NEV]+')' -- , [tantargy].[C_NEV]) [TantargyNevZarojellel], [tantargy].[C_NEVNYOMTATVANYBAN] [TantargyNevNyomtatvanyban], [tantargy].[C_NEV] [TantargyNev], [tantargy].[C_TARGYKATEGORIA] [TargyKategoriaId], [tantargy].[C_FOTARGYE] [FotargyE], [tantargy].[C_ALTANTARGYKENTNYOMTATVANYBAN] [Altantargy], [tantargy].[C_FOTARGYID] [FotargyId], [tanuloErtekeles].[C_ERTEKELESTEMA] [ErtekelesTema], [tanuloErtekeles].[C_ERTEKELOID] [ErtekeloId], [tanuloErtekeles].[C_ERTEKELESMODID] [ErtekelesModjaId], [tanuloErtekeles].[C_ISMAGATARTASSZORGALOM] [IsMagatartasSzorgalom], IIF( -- [tanuloErtekeles].[C_ERTEKELESTEMA] IS NOT NULL AND [tanuloErtekeles].[C_TIPUSID] IN(1519, 1520), '('+CAST(CHAR(ROW_NUMBER() OVER(PARTITION BY [tanuloErtekeles].[C_TANULOID], [tanuloErtekeles].[C_TIPUSID], IIF([tanuloErtekeles].[C_ERTEKELESTEMA] IS NOT NULL, 1, 0) ORDER BY [tanuloErtekeles].[C_DATUM])+96) AS NVARCHAR(10))+')', '') [Jeloles], IIF( -- [tanuloErtekeles].[C_ERTEKELESTEMA] IS NOT NULL AND [tanuloErtekeles].[C_TIPUSID] IN(1519, 1520), '('+CAST(CHAR(ROW_NUMBER() OVER(PARTITION BY [tanuloErtekeles].[C_TANULOID], [tanuloErtekeles].[C_TIPUSID], IIF([tanuloErtekeles].[C_ERTEKELESTEMA] IS NOT NULL, 1, 0) ORDER BY [tanuloErtekeles].[C_DATUM])+96) AS NVARCHAR(10))+'): '+[tanuloErtekeles].[C_ERTEKELESTEMA], '') [JelolesAndErtekelesTema] FROM [T_TANULOERTEKELES_OSSZES] [tanuloErtekeles] INNER JOIN [fnGetDokumentumOsztalyokCsoportokTanuloi](@tanevId, @osztalyCsoportId, 'T') [tanulo] ON [tanulo].[TanuloId] = [tanuloErtekeles].[C_TANULOID] INNER JOIN [T_TANULOCSOPORT_OSSZES] [TanuloCsoport] ON [TanuloCsoport].[C_TANULOID] = [tanuloErtekeles].[C_TANULOID] AND [TanuloCsoport].[C_OSZTALYCSOPORTID] = [tanuloErtekeles].[C_OSZTALYCSOPORTID] AND [tanuloErtekeles].[C_DATUM] BETWEEN [TanuloCsoport].[C_BELEPESDATUM] AND ISNULL([TanuloCsoport].[C_KILEPESDATUM], GETDATE()) AND [TanuloCsoport].[TOROLT] = 'F' LEFT JOIN [T_TANTARGY_OSSZES] [tantargy] ON [tantargy].[Id] = [tanuloErtekeles].[C_TANTARGYID] AND ([tantargy].[C_TARGYKATEGORIA] <> 1248 OR [tantargy].[C_TARGYKATEGORIA] IS NULL) LEFT JOIN [T_DICTIONARYITEMBASE_OSSZES] [ertekelesOsztalyzat] ON [ertekelesOsztalyzat].[ID] = [tanuloErtekeles].[C_ERTEKELESOSZTALYZATID] AND [ertekelesOsztalyzat].[C_TANEVID] = @tanevId AND [ertekelesOsztalyzat].[C_TYPE] LIKE 'OsztalyzatTipus' LEFT JOIN [T_DICTIONARYITEMBASE_OSSZES] [magatartasOsztalyzat] ON [magatartasOsztalyzat].[ID] = [tanuloErtekeles].[C_MAGATARTASOSZTALYZATID] AND [magatartasOsztalyzat].[C_TANEVID] = @tanevId AND [magatartasOsztalyzat].[C_TYPE] LIKE 'OsztalyzatTipus' LEFT JOIN [T_DICTIONARYITEMBASE_OSSZES] [szorgalomOsztalyzat] ON [szorgalomOsztalyzat].[ID] = [tanuloErtekeles].[C_SZORGALOMOSZTALYZATID] AND [szorgalomOsztalyzat].[C_TANEVID] = @tanevId AND [szorgalomOsztalyzat].[C_TYPE] LIKE 'OsztalyzatTipus' LEFT JOIN [T_DICTIONARYITEMBASE_OSSZES] [magatartasErtek] ON [magatartasErtek].[ID] = [tanuloErtekeles].[C_MAGATARTASERTEKID] AND [magatartasErtek].[C_TANEVID] = @tanevId AND [magatartasErtek].[C_TYPE] LIKE 'MagatartasErtekelesTipus' LEFT JOIN [T_DICTIONARYITEMBASE_OSSZES] [szorgalomErtek] ON [szorgalomErtek].[ID] = [tanuloErtekeles].[C_SZORGALOMERTEKID] AND [szorgalomErtek].[C_TANEVID] = @tanevId AND [szorgalomErtek].[C_TYPE] LIKE 'SzorgalomErtekelesTipus' INNER JOIN [T_OSZTALYCSOPORT_OSSZES] [osztalyCsoport] ON [osztalyCsoport].[ID] = [tanuloErtekeles].[C_OSZTALYCSOPORTID] AND [osztalyCsoport].[TOROLT] = 'F' LEFT JOIN [T_CSOPORT_OSSZES] [csoport] ON [csoport].[ID] = [tanuloErtekeles].[C_OSZTALYCSOPORTID] LEFT JOIN [T_OSZTALY_OSSZES] [osztaly] ON [osztaly].[ID] = [tanuloErtekeles].[C_OSZTALYCSOPORTID] WHERE [tanuloErtekeles].[Torolt] = 'F' AND (@atsoroltTanuloErtekelesek > 0 OR ([tanuloErtekeles].[C_OSZTALYCSOPORTID] IN ( SELECT [ID] FROM [fnGetDokumentumKapcsolodoOsztalycsoportok](@osztalyCsoportId, @tanevId) ))) AND (@ertekelesTipusa IS NULL OR [C_TIPUSID] = @ertekelesTipusa) AND (@csakKivlasztottOsztalyCsoport = 0 OR [tanuloErtekeles].[C_OSZTALYCSOPORTID] = @osztalyCsoportId) AND (@csakTanorai = 0 OR [osztaly].[ID] IS NOT NULL OR ([csoport].[ID] IS NOT NULL AND [csoport].[C_TIPUSA] IN ( SELECT [ID] FROM [fnGetTanoraiCeluCsoportTipusok](@tanevId) ))) option (recompile); IF @atsoroltTanuloErtekelesek = 1 BEGIN DECLARE @osztalyTantargyak TABLE ( [TantargyId] INT ); INSERT INTO @osztalyTantargyak SELECT DISTINCT [TantargyId] FROM @retTanuloErtekeles WHERE [OsztalyCsoportId] IN ( SELECT [ID] FROM [fnGetDokumentumKapcsolodoOsztalycsoportok](@osztalyCsoportId, @tanevId) ) UNION SELECT DISTINCT [C_TANTARGYID] FROM [T_FOGLALKOZAS_OSSZES] INNER JOIN [fnGetDokumentumKapcsolodoOsztalycsoportok](@osztalyCsoportId, @tanevId) AS [OSZTALYCSOPORT] ON [OSZTALYCSOPORT].[ID] = [T_FOGLALKOZAS_OSSZES].[C_OSZTALYCSOPORTID] WHERE [T_FOGLALKOZAS_OSSZES].[TOROLT] = 'F'; DELETE FROM @retTanuloErtekeles WHERE [ErtekelesId] NOT IN ( SELECT [ErtekelesId] FROM @retTanuloErtekeles WHERE [TantargyId] IS NULL OR [TantargyId] IN ( SELECT [TantargyId] FROM @osztalyTantargyak ) ); END RETURN END; GO