242 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			242 lines
		
	
	
		
			9.2 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
SET ANSI_NULLS ON
 | 
						|
GO
 | 
						|
SET QUOTED_IDENTIFIER ON
 | 
						|
GO
 | 
						|
 | 
						|
IF OBJECT_ID('[dbo].[sp_GetUzenofuzetErtekelolap]') IS NOT NULL 
 | 
						|
BEGIN
 | 
						|
  DROP PROCEDURE [dbo].[sp_GetUzenofuzetErtekelolap]
 | 
						|
END  
 | 
						|
GO
 | 
						|
 | 
						|
-- =============================================
 | 
						|
-- Author:		<Kelemen Attila>
 | 
						|
-- Create date: <2016. 01. 06.>
 | 
						|
-- Description:	<Tanulók jegyei havi bontásban>
 | 
						|
-- =============================================
 | 
						|
CREATE PROCEDURE [sp_GetUzenofuzetErtekelolap]
 | 
						|
	@osztalyId int,
 | 
						|
	@TanevId   int
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
	-- SET NOCOUNT ON added to prevent extra result sets from
 | 
						|
	-- interfering with SELECT statements.
 | 
						|
	SET NOCOUNT ON;
 | 
						|
 | 
						|
	--Intézmény, tanév
 | 
						|
	SELECT T_INTEZMENYADATOK_OSSZES.C_NEV IntezmenyNeve,
 | 
						|
		   T_INTEZMENYADATOK_OSSZES.C_VAROS IntezmenyVaros,
 | 
						|
		   dbo.fnGetDokumentumIntezmenyCime(@tanevId) IntezmenyCime,
 | 
						|
		   T_INTEZMENYADATOK_OSSZES.C_TELEFONSZAM TELEFON,
 | 
						|
		   T_INTEZMENYADATOK_OSSZES.C_EMAILCIM EMAILCIM,
 | 
						|
		   T_INTEZMENYADATOK_OSSZES.C_OMKOD IntezmenyOMKod,
 | 
						|
		   T_INTEZMENYADATOK_OSSZES.C_IGAZGATONEVE Intezmenyvezeto, 
 | 
						|
		   (SELECT C_OSZTALYFONOKID FROM T_OSZTALY_OSSZES WHERE T_OSZTALY_OSSZES.ID = @osztalyId and T_OSZTALY_OSSZES.C_ALTANEVID = @TanevId and T_OSZTALY_OSSZES.TOROLT = 'F') PartnerID,
 | 
						|
		   T_TANEV_OSSZES.C_NEV TANEV
 | 
						|
	FROM T_INTEZMENYADATOK_OSSZES
 | 
						|
	inner join T_TANEV_OSSZES on T_TANEV_OSSZES.ID = T_INTEZMENYADATOK_OSSZES.C_TANEVID and T_TANEV_OSSZES.C_INTEZMENYID = T_INTEZMENYADATOK_OSSZES.C_INTEZMENYID and T_TANEV_OSSZES.TOROLT = 'F'
 | 
						|
	WHERE T_INTEZMENYADATOK_OSSZES.TOROLT = 'F'
 | 
						|
	and T_TANEV_OSSZES.ID = @TanevId
 | 
						|
 | 
						|
	--Osztály, évfolyam
 | 
						|
	select T_OSZTALYCSOPORT_OSSZES.C_NEV,
 | 
						|
		   T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA,
 | 
						|
		   T_FELHASZNALO_OSSZES.C_NYOMTATASINEV Osztalyfonok
 | 
						|
	from T_OSZTALYCSOPORT_OSSZES
 | 
						|
	inner join T_OSZTALY_OSSZES on t_osztalycsoport_OSSZES.id = T_OSZTALY_OSSZES.ID
 | 
						|
	inner join T_FELHASZNALO_OSSZES on t_felhasznalo_OSSZES.id = t_osztaly_OSSZES.c_osztalyfonokid
 | 
						|
	where T_OSZTALYCSOPORT_OSSZES.TOROLT='F' 
 | 
						|
	AND T_OSZTALYCSOPORT_OSSZES.ID=@osztalyId
 | 
						|
	and T_OSZTALYCSOPORT_OSSZES.C_TANEVID = @TanevId
 | 
						|
 | 
						|
	
 | 
						|
	--Tanuló adatai
 | 
						|
	SELECT DISTINCT T_FELHASZNALO_OSSZES.ID TANULOID,
 | 
						|
					T_FELHASZNALO_OSSZES.C_NYOMTATASINEV TANULONEV,
 | 
						|
					T_FELHASZNALO_OSSZES.C_OKTATASIAZONOSITO OKTATASIAZONOSITO
 | 
						|
	FROM T_FELHASZNALO_OSSZES
 | 
						|
			JOIN (SELECT C_TANULOID, C_OSZTALYCSOPORTID FROM T_TANULOCSOPORT_OSSZES WHERE T_TANULOCSOPORT_OSSZES.TOROLT='F'
 | 
						|
			AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
 | 
						|
			AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())) TANCSOPORT ON TANCSOPORT.C_TANULOID = T_FELHASZNALO_OSSZES.ID 
 | 
						|
	WHERE T_FELHASZNALO_OSSZES.TOROLT='F'
 | 
						|
	AND TANCSOPORT.C_OSZTALYCSOPORTID = @osztalyId
 | 
						|
	and T_FELHASZNALO_OSSZES.C_TANEVID = @TanevId
 | 
						|
	ORDER BY T_FELHASZNALO_OSSZES.C_NYOMTATASINEV
 | 
						|
	--Jegyek
 | 
						|
 | 
						|
	
 | 
						|
	select * INTO #Jegyek from (
 | 
						|
 | 
						|
-------------------------
 | 
						|
--ÉVKÖZI JEGYEK
 | 
						|
-------------------------
 | 
						|
 | 
						|
select distinct
 | 
						|
 | 
						|
--T_TANULOERTEKELES_OSSZES.ID,
 | 
						|
T_TANULOCSOPORT_OSSZES.C_TANULOID TanuloID,
 | 
						|
T_TANTARGY_OSSZES.ID Tantargy,
 | 
						|
T_DICTIONARYITEMBASE_OSSZES.C_VALUE Osztalyzat,
 | 
						|
cast(MONTH(T_TANULOERTEKELES_OSSZES.C_ERTEKELESDATUM) as nvarchar) Honap
 | 
						|
 from
 | 
						|
 
 | 
						|
  T_TANULOERTEKELES_OSSZES
 | 
						|
 | 
						|
		inner join T_TANULOCSOPORT_OSSZES on t_tanuloertekeles_OSSZES.c_tanuloid = t_tanulocsoport_OSSZES.c_tanuloid
 | 
						|
--		inner join T_OSZTALYZATERTEKELES_OSSZES on T_TANULOERTEKELES_OSSZES.ID = T_OSZTALYZATERTEKELES_OSSZES.ID
 | 
						|
		inner join T_TANTARGY_OSSZES on T_TANULOERTEKELES_OSSZES.C_TANTARGYID = T_TANTARGY_OSSZES.id
 | 
						|
		inner join T_DICTIONARYITEMBASE_OSSZES on T_TANULOERTEKELES_OSSZES.c_osztalyzat = T_DICTIONARYITEMBASE_OSSZES.ID
 | 
						|
 | 
						|
	  WHERE --T_TANULOERTEKELES.C_ERTEKELESTIPUSA = 1518 AND
 | 
						|
	  T_TANULOERTEKELES_OSSZES.TOROLT='F'
 | 
						|
	  AND T_TANULOCSOPORT_OSSZES.TOROLT='F'
 | 
						|
	  AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
 | 
						|
	  AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())
 | 
						|
--	  AND T_OSZTALYZATERTEKELES_OSSZES.TOROLT='F'
 | 
						|
	  AND T_TANTARGY_OSSZES.TOROLT='F'
 | 
						|
	  AND MONTH(T_TANULOERTEKELES_OSSZES.C_ERTEKELESDATUM) != 1
 | 
						|
	  AND T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @osztalyId
 | 
						|
	  and T_TANULOERTEKELES_OSSZES.C_TANEVID = @TanevId
 | 
						|
 | 
						|
	  union all
 | 
						|
-------------------------
 | 
						|
--JANUÁRI JEGYEK
 | 
						|
-------------------------
 | 
						|
	  select distinct
 | 
						|
--		T_TANULOERTEKELES_OSSZES.ID,
 | 
						|
		T_TANULOCSOPORT_OSSZES.C_TANULOID TanuloID,
 | 
						|
		T_TANTARGY_OSSZES.ID Tantargy,
 | 
						|
		T_DICTIONARYITEMBASE_OSSZES.C_VALUE Osztalyzat,
 | 
						|
		
 | 
						|
		case when (day(t_tanuloertekeles_OSSZES.c_ertekelesdatum) < 15) then
 | 
						|
			'1/I'
 | 
						|
		else '1/II'
 | 
						|
		end Honap
 | 
						|
		 from
 | 
						|
		  T_TANULOERTEKELES_OSSZES
 | 
						|
 | 
						|
			inner join T_TANULOCSOPORT_OSSZES on t_tanuloertekeles_OSSZES.c_tanuloid = t_tanulocsoport_OSSZES.c_tanuloid
 | 
						|
--			inner join T_OSZTALYZATERTEKELES_OSSZES on T_TANULOERTEKELES_OSSZES.ID = T_OSZTALYZATERTEKELES_OSSZES.ID
 | 
						|
			inner join T_TANTARGY_OSSZES on T_TANULOERTEKELES_OSSZES.C_TANTARGYID = T_TANTARGY_OSSZES.id
 | 
						|
			inner join T_DICTIONARYITEMBASE_OSSZES on T_TANULOERTEKELES_OSSZES.c_osztalyzat = T_DICTIONARYITEMBASE_OSSZES.ID
 | 
						|
		  WHERE 
 | 
						|
		  --T_TANULOERTEKELES.C_ERTEKELESTIPUSA = 1518 AND
 | 
						|
		  
 | 
						|
	  T_TANULOCSOPORT_OSSZES.TOROLT='F'
 | 
						|
	  AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
 | 
						|
	  AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())
 | 
						|
--	  AND T_OSZTALYZATERTEKELES_OSSZES.TOROLT='F'
 | 
						|
	  AND T_TANTARGY_OSSZES.TOROLT='F'
 | 
						|
	  AND MONTH(T_TANULOERTEKELES_OSSZES.C_ERTEKELESDATUM) = 1
 | 
						|
	AND T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @osztalyId
 | 
						|
	and T_TANULOERTEKELES_OSSZES.C_TANEVID = @TanevId
 | 
						|
 | 
						|
	union all
 | 
						|
-------------------------
 | 
						|
--FÉLÉVI JEGYEK
 | 
						|
-------------------------
 | 
						|
 | 
						|
select distinct
 | 
						|
 | 
						|
--T_TANULOERTEKELES_OSSZES.ID,
 | 
						|
	T_TANULOCSOPORT_OSSZES.C_TANULOID TanuloID,
 | 
						|
	T_TANTARGY_OSSZES.ID Tantargy,
 | 
						|
	T_DICTIONARYITEMBASE_OSSZES.C_VALUE Osztalyzat,
 | 
						|
	'I' Honap
 | 
						|
 from
 | 
						|
 
 | 
						|
  T_TANULOERTEKELES_OSSZES
 | 
						|
 | 
						|
		inner join T_TANULOCSOPORT_OSSZES on t_tanuloertekeles_OSSZES.c_tanuloid = t_tanulocsoport_OSSZES.c_tanuloid
 | 
						|
--		inner join T_OSZTALYZATERTEKELES_OSSZES on T_TANULOERTEKELES_OSSZES.ID = T_OSZTALYZATERTEKELES_OSSZES.ID
 | 
						|
		inner join T_TANTARGY_OSSZES on T_TANULOERTEKELES_OSSZES.C_TANTARGYID = T_TANTARGY_OSSZES.id
 | 
						|
		inner join T_DICTIONARYITEMBASE_OSSZES on T_TANULOERTEKELES_OSSZES.c_osztalyzat = T_DICTIONARYITEMBASE_OSSZES.ID
 | 
						|
 | 
						|
	  WHERE T_TANULOERTEKELES_OSSZES.C_ERTEKELESTIPUSA = 1519
 | 
						|
	  AND T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @osztalyId
 | 
						|
	  AND T_TANULOCSOPORT_OSSZES.TOROLT='F'
 | 
						|
	  AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
 | 
						|
	  AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())
 | 
						|
--	  AND T_OSZTALYZATERTEKELES_OSSZES.TOROLT='F'
 | 
						|
	  AND T_TANTARGY_OSSZES.TOROLT='F'
 | 
						|
	  and T_TANULOERTEKELES_OSSZES.C_TANEVID = @TanevId
 | 
						|
 | 
						|
	  union all
 | 
						|
-------------------------
 | 
						|
--ÉVVÉGI JEGYEK
 | 
						|
-------------------------
 | 
						|
 | 
						|
select distinct
 | 
						|
 | 
						|
--T_TANULOERTEKELES_OSSZES.ID,
 | 
						|
T_TANULOCSOPORT_OSSZES.C_TANULOID TanuloID,
 | 
						|
T_TANTARGY_OSSZES.ID Tantargy,
 | 
						|
T_TANULOERTEKELES_OSSZES.C_OSZTALYZAT,
 | 
						|
'II' Honap
 | 
						|
 from
 | 
						|
 
 | 
						|
  T_TANULOERTEKELES_OSSZES
 | 
						|
 | 
						|
		inner join T_TANULOCSOPORT_OSSZES on t_tanuloertekeles_OSSZES.c_tanuloid = t_tanulocsoport_OSSZES.c_tanuloid
 | 
						|
--		inner join T_OSZTALYZATERTEKELES_OSSZES on T_TANULOERTEKELES_OSSZES.ID = T_OSZTALYZATERTEKELES_OSSZES.ID
 | 
						|
		inner join T_TANTARGY_OSSZES on T_TANULOERTEKELES_OSSZES.C_TANTARGYID = T_TANTARGY_OSSZES.id
 | 
						|
		inner join T_DICTIONARYITEMBASE_OSSZES on T_TANULOERTEKELES_OSSZES.c_osztalyzat = T_DICTIONARYITEMBASE_OSSZES.ID
 | 
						|
 | 
						|
	  WHERE T_TANULOERTEKELES_OSSZES.C_ERTEKELESTIPUSA = 1520
 | 
						|
	  AND MONTH(T_TANULOERTEKELES_OSSZES.C_ERTEKELESDATUM) != 1
 | 
						|
	  AND T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @osztalyId
 | 
						|
	  AND T_TANULOCSOPORT_OSSZES.TOROLT='F'
 | 
						|
	  AND T_TANULOCSOPORT_OSSZES.C_BELEPESDATUM < GETDATE()
 | 
						|
	  AND (T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM is null or T_TANULOCSOPORT_OSSZES.C_KILEPESDATUM >= GETDATE())
 | 
						|
--	  AND T_OSZTALYZATERTEKELES_OSSZES.TOROLT='F'
 | 
						|
	  AND T_TANTARGY_OSSZES.TOROLT='F'
 | 
						|
	  and T_TANULOERTEKELES_OSSZES.C_TANEVID = @TanevId
 | 
						|
	  ) tabla
 | 
						|
 | 
						|
		ALTER TABLE #Jegyek
 | 
						|
		ADD ID INT IDENTITY(1,1)
 | 
						|
 | 
						|
		DECLARE @ID INT = 0
 | 
						|
		DECLARE @TanuloID INT
 | 
						|
		DECLARE @Tantargy INT
 | 
						|
		DECLARE @Osztalyzat INT
 | 
						|
		DECLARE @Honap VARCHAR(5)
 | 
						|
		CREATE TABLE #Temp (TanuloID int, Tantargy INT, Osztalyzat VARCHAR(30), Honap Varchar(5))
 | 
						|
 | 
						|
	WHILE (1 = 1) 
 | 
						|
	BEGIN  
 | 
						|
		SELECT TOP 1 @ID = Jegyek.ID, @TanuloID = Jegyek.TanuloID, @Tantargy = Jegyek.Tantargy, @Osztalyzat = Jegyek.Osztalyzat, @Honap=Jegyek.Honap FROM #Jegyek Jegyek WHERE ID > @ID ORDER BY ID
 | 
						|
		
 | 
						|
		IF @@ROWCOUNT = 0 
 | 
						|
		BEGIN
 | 
						|
			BREAK;
 | 
						|
		END
 | 
						|
		--PRINT @ID
 | 
						|
		IF ((SELECT COUNT(*) FROM #Temp Temp WHERE Temp.TanuloID=@TanuloID AND Temp.Tantargy = @Tantargy AND Temp.Honap = @Honap)=0)
 | 
						|
		BEGIN
 | 
						|
		--PRINT 'INSERT'
 | 
						|
			INSERT INTO #Temp (TanuloID, Tantargy, Osztalyzat, Honap) VALUES (@TanuloID, @Tantargy, CAST(@Osztalyzat as varchar), @Honap)
 | 
						|
		END
 | 
						|
		ELSE
 | 
						|
		BEGIN
 | 
						|
		--PRINT 'UPDATE'
 | 
						|
			UPDATE #Temp SET #Temp.Osztalyzat = CAST(#Temp.Osztalyzat as varchar) + ', '+CAST(@Osztalyzat as varchar)
 | 
						|
			WHERE #Temp.TanuloID=@TanuloID AND #Temp.Tantargy = @Tantargy AND #Temp.Honap = @Honap
 | 
						|
			END
 | 
						|
	END
 | 
						|
 | 
						|
	SELECT
 | 
						|
	* FROM
 | 
						|
	
 | 
						|
	(
 | 
						|
	select TanuloID, C_NEV, Honap,Osztalyzat from 
 | 
						|
		#Temp Temp
 | 
						|
	inner join T_TANTARGY_OSSZES ON Temp.Tantargy = T_TANTARGY_OSSZES.ID
 | 
						|
	) TempWithNAMES
 | 
						|
 | 
						|
	pivot (MAX(Osztalyzat) FOR Honap IN ([1/I], [1/II],[2],[3],[4],[5],[6],[7],[8],[9],[10],[11],[12], [I], [II])) PivotTable
 | 
						|
	DROP TABLE #Jegyek
 | 
						|
	DROP TABLE #Temp
 | 
						|
END
 | 
						|
 | 
						|
GO |