IF OBJECT_ID('[dbo].[sp_GenerateErtekelesekTempTablaByTanulo]') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[sp_GenerateErtekelesekTempTablaByTanulo] END GO -- ============================================= -- Description: -- NOTE: EZT A HÁROM TÁROLT ELJÁRÁST EGYBEN KELL KEZELNI, HA MÓDOSÍTJUK!!! -- - sp_GenerateErtekelesekTempTabla -- - sp_GenerateErtekelesekMagatartasSzorgalomTempTabla -- - sp_GenerateErtekelesekTempTablaByTanulo -- ============================================= CREATE PROCEDURE [dbo].[sp_GenerateErtekelesekTempTablaByTanulo] @pTanuloId INT ,@pFotargyAltargyId INT = NULL ,@pFelevVegeDatum DATE ,@pErtekelesTipusEvkozi INT ,@pErtekelesTipusFelevi INT ,@pErtekelesTipusEvvegi INT AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements. SET NOCOUNT ON; DECLARE @TempDictionaryItem TABLE ( ID INT PRIMARY KEY ,C_VALUE INT ,C_ORDER INT ,C_INTEZMENYID INT ,C_TANEVID INT ) INSERT INTO @TempDictionaryItem SELECT ID ,C_VALUE ,C_ORDER ,C_INTEZMENYID ,C_TANEVID FROM T_DICTIONARYITEMBASE WHERE C_TYPE IN ('OsztalyzatTipus', 'MagatartasErtekelesTipus', 'SzorgalomErtekelesTipus', 'TargyKategoriaTipus') AND TOROLT = 'F' DECLARE @TempTanuloErtekeles TABLE ( ID INT ,Datum NVARCHAR(255) ,TipusId INT ,Honap NVARCHAR(2) ,TanuloId INT ,Nev NVARCHAR(255) ,ErtekelesOsztalyzat INT ,ErtekelesSzoveg NVARCHAR(MAX) ,ErtekelesSzovegRovidNev NVARCHAR(3) ,ErtekelesSzazalek INT ,MagatartasOsztalyzat INT ,MagatartasSzoveg NVARCHAR(MAX) ,MagatartasSzovegRovidNev NVARCHAR(3) ,MagatartasErtek INT ,SzorgalomOsztalyzat INT ,SzorgalomSzoveg NVARCHAR(MAX) ,SzorgalomSzovegRovidNev NVARCHAR(3) ,SzorgalomErtek INT ,Suly INT ,TantargyId INT ,TantargyKategoria INT ,FotargyId INT ) INSERT INTO @TempTanuloErtekeles ( ID ,Datum ,TipusId ,Honap ,TanuloId ,Nev ,ErtekelesOsztalyzat ,ErtekelesSzoveg ,ErtekelesSzovegRovidNev ,ErtekelesSzazalek ,MagatartasOsztalyzat ,MagatartasSzoveg ,MagatartasSzovegRovidNev ,MagatartasErtek ,SzorgalomOsztalyzat ,SzorgalomSzoveg ,SzorgalomSzovegRovidNev ,SzorgalomErtek ,Suly ,TantargyId ,TantargyKategoria ,FotargyId ) SELECT DISTINCT * FROM ( SELECT DISTINCT tanuloErtekeles.ID ID ,tanuloErtekeles.C_DATUM Datum ,tanuloErtekeles.C_TIPUSID TipusId ,CASE WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusFelevi THEN 'I' WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusEvvegi THEN 'II' ELSE CASE WHEN CAST(tanuloErtekeles.C_DATUM AS DATE) > @pFelevVegeDatum THEN CAST(MONTH(tanuloErtekeles.C_DATUM) + 1 AS NVARCHAR(2)) ELSE CAST(MONTH(tanuloErtekeles.C_DATUM) AS NVARCHAR(2)) END END Honap ,tanuloCsoport.C_TANULOID TanuloId ,tantargy.C_NEV Nev ,ertekelesOsztalyzat.C_VALUE ErtekelesOsztalyzat ,tanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg ,tanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev ,tanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek ,NULL AS MagatartasOsztalyzat ,NULL AS MagatartasSzoveg ,NULL AS MagatartasSzovegRovidNev ,NULL AS MagatartasErtek ,NULL AS SzorgalomOsztalyzat ,NULL AS SzorgalomSzoveg ,NULL AS SzorgalomSzovegRovidNev ,NULL AS SzorgalomErtek ,tanariAtlagSuly.C_SULY Suly ,tantargy.ID TantargyId ,tantargyKategoria.C_ORDER TantargyKategoria ,tantargy.C_FOTARGYID FotargyId FROM T_TANULOCSOPORT AS tanuloCsoport INNER JOIN T_ORARENDIORA orarendiOra ON orarendiOra.C_OSZTALYCSOPORTID = tanulocsoport.C_OSZTALYCSOPORTID AND orarendiOra.TOROLT = 'F' INNER JOIN dbo.fnGetKapcsolodoTantargyak(@pFotargyAltargyId) AS tantargy ON (@pFotargyAltargyId IS NULL AND tantargy.ID = orarendiOra.C_TANTARGYID) OR (@pFotargyAltargyId IS NOT NULL AND tantargy.ID <> @pFotargyAltargyId) OR (tantargy.ID IN ( SELECT C_FOTARGYID FROM T_TANTARGY WHERE ID = orarendiOra.C_TANTARGYID AND @pFotargyAltargyId IS NULL AND TOROLT = 'F' ) ) LEFT JOIN @TempDictionaryItem AS tantargyKategoria ON tantargyKategoria.ID = tantargy.C_TARGYKATEGORIA LEFT JOIN T_TANULOERTEKELES tanuloErtekeles ON tanuloErtekeles.C_TANULOID = @pTanuloId AND tanuloErtekeles.C_TANTARGYID = tantargy.ID AND tanuloErtekeles.TOROLT = 'F' AND tanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'F' LEFT JOIN @TempDictionaryItem AS ertekelesOsztalyzat ON ertekelesOsztalyzat.ID = tanuloErtekeles.C_ERTEKELESOSZTALYZATID LEFT JOIN T_TANARIATLAGSULY tanariAtlagSuly ON tanariAtlagSuly.C_ERTEKELESMODID = tanuloErtekeles.C_ERTEKELESMODID AND tanuloErtekeles.C_ERTEKELESOSZTALYZATID IS NOT NULL AND tanariAtlagSuly.TOROLT = 'F' WHERE tanuloCsoport.TOROLT = 'F' AND tanuloCsoport.C_TANULOID = @pTanuloId ) AS temp IF @pFotargyAltargyId IS NULL BEGIN INSERT INTO @TempTanuloErtekeles ( ID ,Datum ,TipusId ,Honap ,TanuloId ,Nev ,ErtekelesOsztalyzat ,ErtekelesSzoveg ,ErtekelesSzovegRovidNev ,ErtekelesSzazalek ,MagatartasOsztalyzat ,MagatartasSzoveg ,MagatartasSzovegRovidNev ,MagatartasErtek ,SzorgalomOsztalyzat ,SzorgalomSzoveg ,SzorgalomSzovegRovidNev ,SzorgalomErtek ,Suly ,TantargyId ,TantargyKategoria ,FotargyId ) SELECT DISTINCT tanuloErtekeles.ID ID ,tanuloErtekeles.C_DATUM Datum ,tanuloErtekeles.C_TIPUSID TipusId ,CASE WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusFelevi THEN 'I' WHEN tanuloErtekeles.C_TIPUSID = @pErtekelesTipusEvvegi THEN 'II' ELSE CASE WHEN CAST(tanuloErtekeles.C_DATUM AS DATE) > @pFelevVegeDatum THEN CAST(MONTH(tanuloErtekeles.C_DATUM) + 1 AS NVARCHAR(2)) ELSE CAST(MONTH(tanuloErtekeles.C_DATUM) AS NVARCHAR(2)) END END Honap ,tanuloErtekeles.C_TANULOID TanuloId ,'Magatartás/Szorgalom' Nev ,NULL AS ErtekelesOsztalyzat ,NULL AS ErtekelesSzoveg ,NULL AS ErtekelesSzovegRovidNev ,NULL AS ErtekelesSzazalek ,magatartasOsztalyzat.C_VALUE AS MagatartasOsztalyzat ,tanuloErtekeles.C_MAGATARTASSZOVEG AS MagatartasSzoveg ,tanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV AS MagatartasSzovegRovidNev ,magatartasErtek.C_VALUE AS MagatartasErtek ,szorgalomOsztalyzat.C_VALUE AS SzorgalomOsztalyzat ,tanuloErtekeles.C_SZORGALOMSZOVEG AS SzorgalomSzoveg ,tanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV AS SzorgalomSzovegRovidNev ,szorgalomErtek.C_VALUE AS SzorgalomErtek ,100 AS Suly ,0 AS TantargyId ,0 AS TantargyKategoria ,NULL AS FotargyId FROM T_TANULOERTEKELES tanuloErtekeles LEFT JOIN @TempDictionaryItem AS magatartasOsztalyzat ON magatartasOsztalyzat.ID = tanuloErtekeles.C_MAGATARTASOSZTALYZATID LEFT JOIN @TempDictionaryItem AS szorgalomOsztalyzat ON szorgalomOsztalyzat.ID = tanuloErtekeles.C_SZORGALOMOSZTALYZATID LEFT JOIN @TempDictionaryItem AS magatartasErtek ON magatartasErtek.ID = tanuloErtekeles.C_MAGATARTASERTEKID LEFT JOIN @TempDictionaryItem AS szorgalomErtek ON szorgalomErtek.ID = tanuloErtekeles.C_SZORGALOMERTEKID WHERE tanuloErtekeles.C_TANULOID = @pTanuloId AND tanuloErtekeles.TOROLT = 'F' AND tanuloErtekeles.C_ISMAGATARTASSZORGALOM = 'T' END SELECT result.ID ,Nev ,[09] ,[10] ,[11] ,[12] ,[01I] ,[01II] ,[02] ,[03] ,[04] ,[05] ,[06] ,[I] ,[II] ,Atlag ,TantargyKategoria ,FotargyId FROM ( SELECT pivotErtekelesek.TantargyId ID ,Nev Nev ,[9] [09] ,[10] [10] ,[11] [11] ,[12] [12] ,[1] [01I] ,[2] [01II] ,[3] [02] ,[4] [03] ,[5] [04] ,[6] [05] ,[7] [06] ,[I] [I] ,[II] [II] ,atlag.Jegy Atlag ,pivotErtekelesek.TantargyKategoria TantargyKategoria ,pivotErtekelesek.FotargyId FotargyId FROM ( SELECT DISTINCT tempErtekeles1.Nev ,STUFF ( (SELECT ',' + ISNULL(CAST(tempErtekeles2.ErtekelesOsztalyzat AS VARCHAR(1)), '') + ISNULL(CAST( CASE WHEN tempErtekeles2.ErtekelesSzoveg IS NULL OR LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(tempErtekeles2.ErtekelesSzoveg, CHAR(9), ''), CHAR(10), ''), CHAR(13), ''))) = '' THEN NULL ELSE ISNULL(tempErtekeles2.ErtekelesSzovegRovidNev, 'sz') END AS VARCHAR(3)), '') + ISNULL(CAST(tempErtekeles2.ErtekelesSzazalek AS VARCHAR(3)), '') + ISNULL(CAST(tempErtekeles2.MagatartasOsztalyzat AS VARCHAR(1)), '') + ',' + ISNULL(CAST(tempErtekeles2.SzorgalomOsztalyzat AS VARCHAR(1)), '') + ISNULL(CAST( CASE WHEN tempErtekeles2.MagatartasSzoveg IS NULL OR LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(tempErtekeles2.MagatartasSzoveg, CHAR(9), ''), CHAR(10), ''), CHAR(13), ''))) = '' THEN NULL ELSE ISNULL(tempErtekeles2.MagatartasSzovegRovidNev, 'sz') END AS VARCHAR(3)), '') + ',' + ISNULL(CAST( CASE WHEN tempErtekeles2.SzorgalomSzoveg IS NULL OR LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(tempErtekeles2.SzorgalomSzoveg, CHAR(9), ''), CHAR(10), ''), CHAR(13), ''))) = '' THEN NULL ELSE ISNULL(tempErtekeles2.SzorgalomSzovegRovidNev, 'sz') END AS VARCHAR(3)), '') + ISNULL(CAST(tempErtekeles2.MagatartasErtek AS VARCHAR(1)), '') + ',' + ISNULL(CAST(tempErtekeles2.SzorgalomErtek AS VARCHAR(1)), '') FROM @TempTanuloErtekeles tempErtekeles2 WHERE tempErtekeles1.TantargyId = tempErtekeles2.TantargyId AND tempErtekeles1.Honap = tempErtekeles2.Honap FOR XML PATH ('') ), 1, 1, '' ) TanuloErtekelesList ,tempErtekeles1.Honap ,tempErtekeles1.TanuloId ,tempErtekeles1.TantargyId ,tempErtekeles1.TantargyKategoria ,tempErtekeles1.FotargyId FROM @TempTanuloErtekeles tempErtekeles1 ) AS erdemjegyek PIVOT ( MAX(TanuloErtekelesList) FOR Honap IN ([I], [II], [9] ,[10] ,[11] ,[12] ,[1] ,[2] ,[3] ,[4] ,[5] ,[6], [7]) ) AS pivotErtekelesek LEFT JOIN ( SELECT TantargyId TantargyId ,ROUND ( SUM(CAST(ErtekelesOsztalyzat AS FLOAT) * CAST(ISNULL(Suly, 100) AS FLOAT) / 100) / SUM(CAST(ISNULL(Suly, 100) AS FLOAT) / 100), 2 ) Jegy FROM @TempTanuloErtekeles WHERE TipusId = @pErtekelesTipusEvkozi AND ErtekelesOsztalyzat IS NOT NULL GROUP BY TantargyId ) AS atlag ON pivotErtekelesek.TantargyId = atlag.TantargyId ) AS result LEFT JOIN T_TANTARGY fotargy ON result.FotargyId = fotargy.ID LEFT JOIN @TempDictionaryItem targykategoria ON targykategoria.ID = fotargy.C_TARGYKATEGORIA AND targykategoria.C_INTEZMENYID = fotargy.C_INTEZMENYID AND targykategoria.C_TANEVID = fotargy.C_TANEVID ORDER BY CASE WHEN result.FotargyId IS NULL THEN result.TantargyKategoria ELSE ISNULL(targykategoria.C_ORDER, 10000) END ,ISNULL(fotargy.C_NEV, result.Nev) ,ISNULL(result.FotargyId, result.ID) ,result.FotargyId ,result.Nev IF OBJECT_ID('tempdb..#TempDictionaryItem') IS NOT NULL DROP TABLE #TempDictionaryItem IF OBJECT_ID('tempdb..#TempTanuloErtekeles') IS NOT NULL DROP TABLE #TempTanuloErtekeles END GO