SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF OBJECT_ID('[dbo].[sp_GenerateErtekelesekTempTabla]') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[sp_GenerateErtekelesekTempTabla] 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_GenerateErtekelesekTempTabla] @pTantargyId INT ,@pOsztalyCsoportId INT ,@pFelevVegeDatum DATE ,@pErtekelesTipusEvkozi INT ,@pErtekelesTipusFelevi INT ,@pErtekelesTipusEvvegi 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 = GETDATE() 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') 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 ,Suly INT ) INSERT INTO @TempTanuloErtekeles 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 ,felhasznalo.C_NYOMTATASINEV Nev ,ertekelesOsztalyzat.C_VALUE ErtekelesOsztalyzat ,tanuloErtekeles.C_ERTEKELESSZOVEG ErtekelesSzoveg ,tanuloErtekeles.C_ERTEKELESSZOVEGROVIDNEV ErtekelesSzovegRovidNev ,tanuloErtekeles.C_ERTEKELESSZAZALEK ErtekelesSzazalek ,tanariAtlagSuly.C_SULY Suly FROM ( SELECT C_TANULOID FROM T_TANULOCSOPORT WHERE TOROLT = 'F' AND C_BELEPESDATUM <= @pDatum AND (C_KILEPESDATUM IS NULL OR C_KILEPESDATUM >= @pDatum) AND C_OSZTALYCSOPORTID = @pOsztalyCsoportId ) AS tanuloCsoport INNER JOIN ( SELECT ID ,C_NYOMTATASINEV FROM T_FELHASZNALO WHERE TOROLT = 'F' ) AS felhasznalo ON felhasznalo.ID = tanuloCsoport.C_TANULOID LEFT JOIN ( SELECT ID ,C_DATUM ,C_TIPUSID ,C_TANULOID ,C_ERTEKELESOSZTALYZATID ,C_ERTEKELESSZOVEG ,C_ERTEKELESSZOVEGROVIDNEV ,C_ERTEKELESSZAZALEK ,C_ERTEKELESMODID FROM T_TANULOERTEKELES WHERE TOROLT = 'F' AND C_TANTARGYID = @pTantargyId ) AS tanuloErtekeles ON tanuloErtekeles.C_TANULOID = tanuloCsoport.C_TANULOID 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' ) AS temp SELECT result.* ,result2.ErtkelesMentesseg ,result2.SzovegesenErtekelheto FROM ( SELECT pivotErtekelesek.TanuloId 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 ,@pTantargyId TantargyId 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)), '') FROM @TempTanuloErtekeles tempErtekeles2 WHERE tempErtekeles1.TanuloId = tempErtekeles2.TanuloId AND tempErtekeles1.Honap = tempErtekeles2.Honap FOR XML PATH ('') ), 1, 1, '' ) TanuloErtekelesList ,tempErtekeles1.Honap ,tempErtekeles1.TanuloId 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 TanuloId TanuloId ,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 TanuloId ) AS atlag ON pivotErtekelesek.TanuloId = atlag.TanuloId ) AS result INNER JOIN ( SELECT DISTINCT felhasznalo.ID ID ,tanuloMentesseg.C_ERTEKELESMENTESITES ErtkelesMentesseg ,tanuloMentesseg.C_SZOVEGESENERTEKELHETO SzovegesenErtekelheto FROM T_TANULOCSOPORT AS tanuloCsoport INNER JOIN T_FELHASZNALO felhasznalo ON felhasznalo.ID = tanuloCsoport.C_TANULOID LEFT JOIN T_TANULOMENTESSEG tanuloMentesseg ON tanuloMentesseg.C_TANULOID = felhasznalo.ID AND tanuloMentesseg.TOROLT = 'F' 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) 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) ) AS result2 ON result2.ID = result.ID ORDER BY 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