210 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
			
		
		
	
	
			210 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
	
	
SET ANSI_NULLS ON
 | 
						|
GO
 | 
						|
SET QUOTED_IDENTIFIER ON
 | 
						|
GO
 | 
						|
 | 
						|
IF OBJECT_ID('[dbo].[sp_GetSzakmaiGyNaplo]') IS NOT NULL 
 | 
						|
BEGIN
 | 
						|
  DROP PROCEDURE [dbo].[sp_GetSzakmaiGyNaplo]
 | 
						|
END  
 | 
						|
GO
 | 
						|
 | 
						|
CREATE PROCEDURE [dbo].[sp_GetSzakmaiGyNaplo]
 | 
						|
  @tanevId				INT,
 | 
						|
  @intezmenyId			INT, 
 | 
						|
  @csoportId			INT,
 | 
						|
  @iskolaErdekuSzamit	BIT
 | 
						|
 | 
						|
AS
 | 
						|
BEGIN
 | 
						|
  SET NOCOUNT ON;
 | 
						|
 | 
						|
--Kezdőoldal
 | 
						|
select ia.c_nev as IntezmenyNev, dbo.fnGetDokumentumIntezmenyCime(@tanevId) as IntezmenyCim, ia.c_omkod as OMKOD, ia.c_igazgatoneve as IntezmenyVezeto, ocs.c_nev NapkozisCsoport, 		
 | 
						|
		isnull(f.c_nyomtatasinev,'-') as CsoportVezeto, isnull(cs.c_csoportnaploleiras,'-') as CsoportNaploLeiras, FORMAT(cs.c_csoportnaplomegnyitasa, 'yyyy. MMMM dd.', 'hu-hu') as Megnyitas, 
 | 
						|
		isnull(FORMAT(cs.c_csoportnaplozarasa, 'yyyy. MMMM dd.', 'hu-hu'),'-') as Lezaras, t.c_nev as Tanev, cs.c_csoportnaploleiras as Megjegyzes 
 | 
						|
from T_INTEZMENY_OSSZES i
 | 
						|
	inner join T_INTEZMENYADATOK_OSSZES ia on ia.c_intezmenyid=i.id
 | 
						|
	inner join T_OSZTALYCSOPORT_OSSZES ocs on ocs.c_intezmenyid=i.id 
 | 
						|
	inner join T_CSOPORT_OSSZES cs on cs.id=ocs.id 
 | 
						|
	left join T_FELHASZNALO_OSSZES f on f.id=cs.c_csoportvezetoid
 | 
						|
	inner join T_TANEV_OSSZES t on t.id=ia.c_tanevid
 | 
						|
where i.id=@intezmenyid and ia.c_tanevid=@tanevid and ocs.id=@csoportId
 | 
						|
 | 
						|
--Csoport tanulóinak osztályai
 | 
						|
  SELECT
 | 
						|
	 COUNT(DISTINCT TanuloId)							 Tanulo
 | 
						|
	,dbo.fnGetDokumentumTanuloAktualisOsztaly(TanuloId)	 Osztaly
 | 
						|
  FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @csoportId, 'T')
 | 
						|
  GROUP BY dbo.fnGetDokumentumTanuloAktualisOsztaly(TanuloId)
 | 
						|
 | 
						|
DECLARE @tanulo TABLE (Tanulo int, Osztaly nvarchar(max), RovidNev nvarchar(max))
 | 
						|
insert into @tanulo 
 | 
						|
  SELECT
 | 
						|
	 TanuloId
 | 
						|
	,dbo.fnGetDokumentumTanuloAktualisOsztaly(TanuloId)	 
 | 
						|
	,dbo.fnGetDokumentumTanuloAktualisOsztaly(TanuloId) 
 | 
						|
  FROM fnGetDokumentumOsztalyokCsoportokTanuloi(@tanevId, @csoportId, 'T')
 | 
						|
 | 
						|
declare @datum date=getdate()
 | 
						|
create table #OraSorszam (TanitasioraId int, OraSorszam int)
 | 
						|
insert into #OraSorszam 
 | 
						|
EXEC [sp_GetOraSorszamByOsztaly]
 | 
						|
	@osztalyCsoportId = @csoportId,
 | 
						|
	@datum = @datum,
 | 
						|
	@intezmenyId = @intezmenyId,
 | 
						|
	@tanevId = @tanevId
 | 
						|
 | 
						|
declare @mulasztas table (Csoport nvarchar(1), Tanulo int, Oraszam int)
 | 
						|
insert into @mulasztas
 | 
						|
select 'x' Csoport, tm.c_oratanuloiid Tanulo, oes.OraSorszam AS OraSzam from T_TANULOMULASZTAS_OSSZES tm
 | 
						|
	inner join T_TANITASIORA_OSSZES tao on tm.c_tanitasiorakid=tao.id and tao.c_tanevid=@tanevid
 | 
						|
	LEFT JOIN #OraSorszam oes on oes.TanitasioraId=tao.id
 | 
						|
where 
 | 
						|
	tao.c_osztalycsoportid=@csoportId 
 | 
						|
	AND tm.torolt='F' 
 | 
						|
	AND tm.c_tanevid=@tanevid 
 | 
						|
	AND tm.c_intezmenyid=@intezmenyid
 | 
						|
	AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA <> 1533 OR C_IGAZOLASTIPUSA IS NULL))
 | 
						|
 | 
						|
select f.c_nyomtatasinev Tanulo, tanulo.RovidNev Osztaly, m.[1], m.[2], m.[3], m.[4], m.[5], m.[6], m.[7], m.[8], m.[9], m.[10], 
 | 
						|
									  m.[11], m.[12], m.[13], m.[14], m.[15], m.[16], m.[17], m.[18],m.[19],m.[20],
 | 
						|
									  m.[21], m.[22], m.[23], m.[24], m.[25], m.[26], m.[27], m.[28],m.[29],m.[30],
 | 
						|
									  m.[31], m.[32], m.[33], m.[34], m.[35], m.[36], m.[37], m.[38],m.[39],m.[40],
 | 
						|
									  m.[41], m.[42], m.[43], m.[44], m.[45], m.[46], m.[47], m.[48],m.[49],m.[50], 
 | 
						|
									  osszesM.Osszes 
 | 
						|
from @tanulo tanulo
 | 
						|
left join (select * from @mulasztas mulasztas pivot (max(Csoport) for Oraszam in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], 
 | 
						|
																	   [11], [12], [13], [14], [15], [16], [17], [18],[19],[20],
 | 
						|
																	   [21], [22], [23], [24], [25], [26], [27], [28],[29],[30],
 | 
						|
																	   [31], [32], [33], [34], [35], [36], [37], [38],[39],[40],
 | 
						|
																	   [41], [42], [43], [44], [45], [46], [47], [48],[49],[50])) pv)m on m.Tanulo=tanulo.Tanulo
 | 
						|
inner join T_FELHASZNALO_OSSZES f on f.id=tanulo.Tanulo
 | 
						|
left join (select Tanulo, count(Csoport) as Osszes from @mulasztas m group by Tanulo) osszesM on osszesM.Tanulo=tanulo.Tanulo
 | 
						|
order by f.c_nyomtatasinev
 | 
						|
 | 
						|
--napló
 | 
						|
declare @letszam int=(select count(tcs.c_tanuloid) from T_TANULOCSOPORT_OSSZES tcs where tcs.c_osztalycsoportid=@csoportId and tcs.Torolt='F')
 | 
						|
 | 
						|
SELECT 
 | 
						|
	 tao.Id						                                                                            TanitasioraId
 | 
						|
	,dbo.fnGetDokumentumDatumFormatum(tao.C_DATUM)                                                          Datum		
 | 
						|
	,C_ORATULAJDONOSID			                                                                            PedagogusId
 | 
						|
	,ISNULL('Helyettesítő: ' + helyettesito.C_NYOMTATASINEV, pedagogus.C_NYOMTATASINEV)						PedagogusNev
 | 
						|
	,IIF(C_MEGTARTOTT = 'T', REPLACE(REPLACE(C_TEMA, CHAR(0x0007),''), CHAR(0x000B), ''), 'Elmaradt')		Tema
 | 
						|
	,@letszam-isnull(hianyzo.Hianyzok,0) as																	Letszam
 | 
						|
	,IIF(tantargy.C_NEV <> C_NEVNYOMTATVANYBAN AND C_NEVNYOMTATVANYBAN IS NOT NULL, C_NEVNYOMTATVANYBAN 	--
 | 
						|
	+ ' (' + tantargy.C_NEV + ')', tantargy.C_NEV)															TantargyNev
 | 
						|
	,tao.C_TANTARGYID																						TantargyId
 | 
						|
	,tao.C_MEGTARTOTT																						Megtartott
 | 
						|
	,C_OSZTALYCSOPORTID																						OsztalyCsoportId
 | 
						|
INTO #megtartottOrak
 | 
						|
FROM T_TANITASIORA_OSSZES tao
 | 
						|
	LEFT JOIN (select tm.c_tanitasiorakid as Tanitasiora, count(tm.c_oratanuloiid) Hianyzok from T_TANULOMULASZTAS_OSSZES tm where tm.Torolt='F' group by tm.c_tanitasiorakid ) hianyzo on hianyzo.Tanitasiora=tao.id
 | 
						|
	INNER JOIN T_FELHASZNALO_OSSZES pedagogus ON pedagogus.Id = tao.C_TANARID
 | 
						|
	LEFT JOIN T_FELHASZNALO_OSSZES helyettesito ON helyettesito.Id = tao.C_HELYETTESITOTANARID
 | 
						|
	INNER JOIN T_TANTARGY_OSSZES tantargy ON tantargy.Id = tao.C_TANTARGYID AND tantargy.C_GYAKORLATI = 'T'
 | 
						|
WHERE 
 | 
						|
	C_OSZTALYCSOPORTID = @csoportId
 | 
						|
	AND tao.TOROLT = 'F'
 | 
						|
ORDER BY tao.C_DATUM
 | 
						|
 | 
						|
SELECT * FROM #megtartottOrak
 | 
						|
 | 
						|
--hiányzások
 | 
						|
declare @hianyzas table (Tanulo int, Osztaly nvarchar(max), Honap int, IgazoltE nvarchar(1))
 | 
						|
insert into @hianyzas
 | 
						|
select Tanulo, RovidNev, datepart(month,tao.c_datum) as Honap, tm.c_igazolt as IgazoltE from @tanulo tanulo
 | 
						|
	left join T_TANULOMULASZTAS_OSSZES tm on tm.c_oratanuloiid=tanulo.Tanulo and tm.torolt='F' and tm.c_tanevid=@tanevid 
 | 
						|
	left join T_TANITASIORA_OSSZES tao on tao.id=tm.c_tanitasiorakid and tao.c_tanevid=@tanevid 
 | 
						|
where 
 | 
						|
	tao.c_osztalycsoportid=@csoportId 
 | 
						|
	AND tao.torolt='F'
 | 
						|
	AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA <> 1533 OR C_IGAZOLASTIPUSA IS NULL))
 | 
						|
 | 
						|
select f.c_nyomtatasinev as Tanulo, tanulo.RovidNev Osztaly, 
 | 
						|
		--igazolt
 | 
						|
		iif(i.[1]=0,null, i.[1]) as [1], iif(i.[2]=0,null, i.[2]) as [2], iif(i.[3]=0,null, i.[3]) as [3], iif(i.[4]=0,null, i.[4]) as [4], iif(i.[5]=0,null, i.[5]) as [5],iif(i.[6]=0,null, i.[6]) as [6],
 | 
						|
		iif(i.[7]=0,null, i.[7]) as [7], iif(i.[8]=0,null, i.[8]) as [8], iif(i.[9]=0,null, i.[9]) as [9], iif(i.[10]=0,null, i.[10]) as [10], iif(i.[11]=0,null, i.[11]) as [11],  iif(i.[12]=0,null, i.[12]) as [12],
 | 
						|
		--igazolatlan
 | 
						|
		iif(ni.[1]=0,null, ni.[1]) as n1, iif(ni.[2]=0,null, ni.[2]) as n2, iif(ni.[3]=0,null, ni.[3]) as n3, iif(ni.[4]=0,null, ni.[4]) as n4, iif(ni.[5]=0,null, ni.[5]) as n5,iif(ni.[6]=0,null, ni.[6]) as n6,
 | 
						|
		iif(ni.[7]=0,null, ni.[7]) as n7, iif(ni.[8]=0,null, ni.[8]) as n8, iif(ni.[9]=0,null, ni.[9]) as n9, iif(ni.[10]=0,null, ni.[10]) as n10, iif(ni.[11]=0,null, ni.[11]) as n11,  iif(ni.[12]=0,null, ni.[12]) as n12,
 | 
						|
		igazolt.Igazolt, igazolatlan.Igazolatlan
 | 
						|
from @tanulo tanulo
 | 
						|
	left join (select pv.* from @hianyzas hianyzas pivot (count(Honap) for Honap in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]))pv where pv.IgazoltE='T')i on tanulo.Tanulo=i.Tanulo
 | 
						|
	left join (select pv.* from @hianyzas hianyzas pivot (count(Honap) for Honap in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]))pv where pv.IgazoltE='F')ni on tanulo.Tanulo=ni.Tanulo
 | 
						|
	left join (select hianyzas.Tanulo Tanulo, count(IgazoltE) as Igazolt from @hianyzas hianyzas where hianyzas.IgazoltE='T' group by hianyzas.Tanulo) igazolt on igazolt.Tanulo=tanulo.Tanulo
 | 
						|
	left join (select hianyzas.Tanulo Tanulo, count(IgazoltE) as Igazolatlan from @hianyzas hianyzas where hianyzas.IgazoltE='F' group by hianyzas.Tanulo) igazolatlan on igazolatlan.Tanulo=tanulo.Tanulo
 | 
						|
	inner join T_FELHASZNALO_OSSZES f on f.id=tanulo.Tanulo
 | 
						|
 | 
						|
--Mulasztások összesen
 | 
						|
declare @hianyzasOssz table (Osztaly int, Honap int, IgazoltE nvarchar(1))
 | 
						|
insert into @hianyzasOssz
 | 
						|
select @csoportId, datepart(month,tao.c_datum) as Honap, tm.c_igazolt as IgazoltE from @tanulo tanulo
 | 
						|
	left join T_TANULOMULASZTAS_OSSZES tm on tm.c_oratanuloiid=tanulo.Tanulo and tm.torolt='F' and tm.c_tanevid=@tanevid 
 | 
						|
	left join T_TANITASIORA_OSSZES tao on tao.id=tm.c_tanitasiorakid and tao.c_tanevid=@tanevid 
 | 
						|
where 
 | 
						|
	tao.c_osztalycsoportid=@csoportId 
 | 
						|
	and tao.torolt='F'
 | 
						|
	AND (@iskolaErdekuSzamit = 1 OR (C_IGAZOLASTIPUSA <> 1533 OR C_IGAZOLASTIPUSA IS NULL))
 | 
						|
 | 
						|
declare @igazoltH table (Csoport int, [1] int, [2] int, [3] int, [4] int, [5] int, [6] int, [7] int, [8] int, [9] int, [10] int, 
 | 
						|
								[11] int, [12] int)
 | 
						|
insert into @igazoltH
 | 
						|
select @csoportId, iif(i.[1]=0,null, i.[1]) as [1], iif(i.[2]=0,null, i.[2]) as [2], iif(i.[3]=0,null, i.[3]) as [3], iif(i.[4]=0,null, i.[4]) as [4], iif(i.[5]=0,null, i.[5]) as [5],iif(i.[6]=0,null, i.[6]) as [6],
 | 
						|
		iif(i.[7]=0,null, i.[7]) as [7], iif(i.[8]=0,null, i.[8]) as [8], iif(i.[9]=0,null, i.[9]) as [9], iif(i.[10]=0,null, i.[10]) as [10], iif(i.[11]=0,null, i.[11]) as [11],  iif(i.[12]=0,null, i.[12]) as [12]
 | 
						|
		from @hianyzasOssz ho pivot (count(Honap) for Honap in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]))i where i.IgazoltE='T'
 | 
						|
 | 
						|
--Mulasztott órák összesen
 | 
						|
declare @igazolatlanH table (Csoport int, [1] int, [2] int, [3] int, [4] int, [5] int, [6] int, [7] int, [8] int, [9] int, [10] int, 
 | 
						|
								[11] int, [12] int)
 | 
						|
insert into @igazolatlanH
 | 
						|
select @csoportId, iif(ni.[1]=0,null, ni.[1]) as n1, iif(ni.[2]=0,null, ni.[2]) as n2, iif(ni.[3]=0,null, ni.[3]) as n3, iif(ni.[4]=0,null, ni.[4]) as n4, iif(ni.[5]=0,null, ni.[5]) as n5,iif(ni.[6]=0,null, ni.[6]) as n6,
 | 
						|
		iif(ni.[7]=0,null, ni.[7]) as n7, iif(ni.[8]=0,null, ni.[8]) as n8, iif(ni.[9]=0,null, ni.[9]) as n9, iif(ni.[10]=0,null, ni.[10]) as n10, iif(ni.[11]=0,null, ni.[11]) as n11,  iif(ni.[12]=0,null, ni.[12]) as n12
 | 
						|
		from @hianyzasOssz ho pivot (count(Honap) for Honap in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12]))ni where ni.IgazoltE='F'
 | 
						|
 | 
						|
select  iif(i.[1]=0,null, i.[1]) as [1], iif(i.[2]=0,null, i.[2]) as [2], iif(i.[3]=0,null, i.[3]) as [3], iif(i.[4]=0,null, i.[4]) as [4], iif(i.[5]=0,null, i.[5]) as [5],iif(i.[6]=0,null, i.[6]) as [6],
 | 
						|
		iif(i.[7]=0,null, i.[7]) as [7], iif(i.[8]=0,null, i.[8]) as [8], iif(i.[9]=0,null, i.[9]) as [9], iif(i.[10]=0,null, i.[10]) as [10], iif(i.[11]=0,null, i.[11]) as [11],  iif(i.[12]=0,null, i.[12]) as [12],
 | 
						|
		iif(ni.[1]=0,null, ni.[1]) as n1, iif(ni.[2]=0,null, ni.[2]) as n2, iif(ni.[3]=0,null, ni.[3]) as n3, iif(ni.[4]=0,null, ni.[4]) as n4, iif(ni.[5]=0,null, ni.[5]) as n5,iif(ni.[6]=0,null, ni.[6]) as n6,
 | 
						|
		iif(ni.[7]=0,null, ni.[7]) as n7, iif(ni.[8]=0,null, ni.[8]) as n8, iif(ni.[9]=0,null, ni.[9]) as n9, iif(ni.[10]=0,null, ni.[10]) as n10, iif(ni.[11]=0,null, ni.[11]) as n11,  iif(ni.[12]=0,null, ni.[12]) as n12
 | 
						|
		 from @igazolth i
 | 
						|
	left join @igazolatlanH ni on i.Csoport=ni.csoport
 | 
						|
 | 
						|
--Mulasztó tanulók szama
 | 
						|
declare @Igazolt  table (Csoport Int, Osszes int)
 | 
						|
insert into @Igazolt
 | 
						|
select @csoportId as Id, count(Tanulo) as IgazoltOsszes from (select distinct tanulo from @hianyzas where IgazoltE='T')m
 | 
						|
 | 
						|
select i.Osszes IgazoltOsszes, ni.Osszes IgazolatlanOsszes from @Igazolt i
 | 
						|
left join (select @csoportId as Id, count(Tanulo) as Osszes from (select distinct tanulo from @hianyzas where IgazoltE='F')m) ni on ni.Id=i.Csoport
 | 
						|
 | 
						|
--Mulasztott órák összesen-összesen
 | 
						|
declare @IgazoltOsszesOsszes  table (Csoport Int, Osszes int)
 | 
						|
insert into @IgazoltOsszesOsszes
 | 
						|
select @csoportId, count(IgazoltE) from @hianyzasOssz where IgazoltE='T'
 | 
						|
 | 
						|
select ioo.Osszes IgazoltOsszesOsszes, nioo.Osszes as IgazolatlanOsszesOsszes from @IgazoltOsszesOsszes ioo
 | 
						|
left join (select @csoportId as Id, count(IgazoltE) Osszes from @hianyzasOssz where IgazoltE='F') nioo on nioo.Id=ioo.Csoport
 | 
						|
 | 
						|
--Megtartott órák száma
 | 
						|
SELECT 
 | 
						|
	COUNT(TantargyId)				TantargyOraszam
 | 
						|
	,Tantargynev					TantargyNev
 | 
						|
INTO #MegtartottOrakSzama 
 | 
						|
FROM #megtartottOrak 
 | 
						|
WHERE Megtartott = 'T'
 | 
						|
GROUP BY TantargyId, TantargyNev
 | 
						|
 | 
						|
 | 
						|
SELECT DISTINCT
 | 
						|
	SUM(tmp.TantargyOraszam)		OsszesTantargySzam
 | 
						|
	,STUFF((
 | 
						|
		SELECT DISTINCT ', ' + btmp.TantargyNev + '(' + CAST(btmp.TantargyOraszam AS NVARCHAR(MAX)) + ')'  
 | 
						|
		FROM #MegtartottOrakSzama btmp
 | 
						|
	FOR XML PATH(''), TYPE)
 | 
						|
	.value('.','NVARCHAR(MAX)'),1,2,'')	  Tantargyak
 | 
						|
FROM #MegtartottOrakSzama tmp
 | 
						|
 | 
						|
END
 | 
						|
 | 
						|
GO |