SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF OBJECT_ID('[dbo].[sp_GenerateMagatartasSzorgalomTempTabla]') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[sp_GenerateMagatartasSzorgalomTempTabla] 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_GenerateMagatartasSzorgalomTempTabla] @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', 'MagatartasErtekelesTipus', 'SzorgalomErtekelesTipus') AND TOROLT = 'F' DECLARE @TempTanuloErtekeles TABLE ( ID INT ,Datum NVARCHAR(255) ,TipusId INT ,TanuloId INT ,TanuloNev NVARCHAR(255) ,AnyjaNeve NVARCHAR(255) ,SzuletesiIdo DATE ,OsztalyNev NVARCHAR(255) ,Honap NVARCHAR(2) ,MagatartasOsztalyzat INT ,MagatartasSzoveg NVARCHAR(MAX) ,MagatartasSzovegRovidNev NVARCHAR(3) ,MagatartasErtek INT ,SzorgalomOsztalyzat INT ,SzorgalomSzoveg NVARCHAR(MAX) ,SzorgalomSzovegRovidNev NVARCHAR(3) ,SzorgalomErtek INT ) INSERT INTO @TempTanuloErtekeles SELECT DISTINCT * FROM ( SELECT DISTINCT tanuloErtekeles.ID ID ,tanuloErtekeles.C_DATUM Datum ,tanuloErtekeles.C_TIPUSID TipusId ,tanuloCsoport.C_TANULOID TanuloId ,felhasznalo.C_NYOMTATASINEV TanuloNev ,felhasznalo.C_ANYJANEVE AnyjaNeve ,felhasznalo.C_SZULETESIDATUM SzuletesiIdo ,osztalyCsoport.C_NEV OsztalyNev ,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 ,magatartasOsztalyzat.C_VALUE MagatartasOsztalyzat ,tanuloErtekeles.C_MAGATARTASSZOVEG MagatartasSzoveg ,tanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV MagatartasSzovegRovidNev ,magatartasErtek.C_VALUE MagatartasErtek ,szorgalomOsztalyzat.C_VALUE SzorgalomOsztalyzat ,tanuloErtekeles.C_SZORGALOMSZOVEG SzorgalomSzoveg ,tanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV SzorgalomSzovegRovidNev ,szorgalomErtek.C_VALUE SzorgalomErtek FROM ( SELECT C_TANULOID ,C_OSZTALYCSOPORTID 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 ,C_ANYJANEVE ,C_SZULETESIDATUM FROM T_FELHASZNALO WHERE TOROLT = 'F' ) AS felhasznalo ON felhasznalo.ID = tanuloCsoport.C_TANULOID LEFT JOIN T_OSZTALYCSOPORT osztalyCsoport ON osztalyCsoport.ID = tanuloCsoport.C_OSZTALYCSOPORTID AND osztalyCsoport.TOROLT = 'F' LEFT JOIN ( SELECT TanuloErtekeles.ID ,TanuloErtekeles.C_DATUM ,TanuloErtekeles.C_TIPUSID ,TanuloErtekeles.C_TANULOID ,TanuloErtekeles.C_MAGATARTASOSZTALYZATID ,TanuloErtekeles.C_MAGATARTASSZOVEG ,TanuloErtekeles.C_MAGATARTASSZOVEGROVIDNEV ,TanuloErtekeles.C_MAGATARTASERTEKID ,TanuloErtekeles.C_SZORGALOMOSZTALYZATID ,TanuloErtekeles.C_SZORGALOMSZOVEG ,TanuloErtekeles.C_SZORGALOMSZOVEGROVIDNEV ,TanuloErtekeles.C_SZORGALOMERTEKID FROM T_TANULOERTEKELES TanuloErtekeles INNER JOIN T_OSZTALYCSOPORT Osztaly ON Osztaly.ID = TanuloErtekeles.C_ROGZITESKORITANULOOSZTALYID AND Osztaly.TOROLT = 'F' AND Osztaly.C_EVFOLYAMTIPUSA = (SELECT EvfolyamTipusId FROM dbo.fnGetTanuloOsztaly(TanuloErtekeles.C_TANULOID)) WHERE TanuloErtekeles.TOROLT = 'F' AND TanuloErtekeles.C_TANTARGYID IS NULL ) AS tanuloErtekeles ON tanuloErtekeles.C_TANULOID = tanuloCsoport.C_TANULOID 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 ) AS temp SELECT * FROM ( SELECT pivotErtekelesek.TanuloId ID ,pivotErtekelesek.TanuloId TanuloId ,TanuloNev TanuloNev ,AnyjaNeve AnyjaNeve ,SzuletesiIdo SzuletesiIdo ,OsztalyNev OsztalyNev ,NULL TantargyId ,[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] ,NULL Atlag FROM ( SELECT DISTINCT tempErtekeles1.TanuloId ,tempErtekeles1.TanuloNev ,tempErtekeles1.AnyjaNeve ,tempErtekeles1.SzuletesiIdo ,tempErtekeles1.OsztalyNev ,tempErtekeles1.Honap ,STUFF ( (SELECT ',' + 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.TanuloId = tempErtekeles2.TanuloId AND tempErtekeles1.Honap = tempErtekeles2.Honap FOR XML PATH ('') ), 1, 1, '' ) TanuloErtekelesList 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 ) AS result ORDER BY result.TanuloNev END GO