kreta/Kreta.DataAccess.Migrations/Scripts/Archive/20170327110702_Init/Stored procedures/sp_GetStatTanuloTantargyiMulasztasMegtartott.sql
2024-03-13 00:33:46 +01:00

72 lines
No EOL
3.2 KiB
Transact-SQL

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
IF OBJECT_ID('[dbo].[sp_GetStatTanuloTantargyiMulasztasMegtartott]') IS NOT NULL
BEGIN
DROP PROCEDURE [dbo].[sp_GetStatTanuloTantargyiMulasztasMegtartott]
END
GO
CREATE PROCEDURE [dbo].[sp_GetStatTanuloTantargyiMulasztasMegtartott]
@osztalyId int,
@TanevId int
AS
BEGIN
SET NOCOUNT ON;
create table #students (Id int)
insert into #students
select f.id from T_TANULOCSOPORT_OSSZES tcs
inner join T_FELHASZNALO_OSSZES f on f.id=tcs.C_TANULOID
where tcs.c_osztalycsoportid=@osztalyid and tcs.torolt='F' and tcs.C_KILEPESDATUM is null
order by f.C_NYOMTATASINEV
create table #mulasztas (Ossz int, Tanulo int, Tantargy int, OsztalyCsoport int)
insert into #mulasztas
select count(tm.id), tm.c_oratanuloiid, t.id, tao.c_osztalycsoportid from T_TANULOMULASZTAS_OSSZES tm
inner join T_TANITASIORA_OSSZES tao on tao.id=tm.c_tanitasiorakid
inner join T_TANTARGY_OSSZES t on t.id=tao.C_TANTARGYID
inner join #students s on s.id=tm.C_ORATANULOIID
where tm.c_tanevId=@tanevId
and tm.Torolt='F'
and tm.C_TIPUS=1500--and tm.c_igazolt='T' or tm.c_igazolt='F' ?????
and ((tao.C_OSZTALYCSOPORTID in (select id from t_osztaly_osszes)) or (tao.c_osztalycsoportid in (select id from t_csoport_osszes where C_TIPUSA=1034)))
group by tm.c_oratanuloiid, t.id, tao.c_osztalycsoportid
create table #naplozott (Tanulo int, Tantargy int, OsztalyCsoport int, Ossz int)
insert into #naplozott
select m.Tanulo, m.Tantargy, m.OsztalyCsoport, count(distinct tao.id) from #mulasztas m
inner join T_TANITASIORA_OSSZES tao on tao.C_OSZTALYCSOPORTID=m.OsztalyCsoport and tao.C_TANTARGYID=m.Tantargy and tao.C_MEGTARTOTT='T'
inner join T_TANULOCSOPORT_OSSZES tcs on tcs.C_TANULOID=m.Tanulo and tcs.C_OSZTALYCSOPORTID=m.OsztalyCsoport
and ((tao.C_OSZTALYCSOPORTID in (select id from t_osztaly_osszes)) or (tao.c_osztalycsoportid in (select id from t_csoport_osszes where C_TIPUSA=1034)))
where tao.TOROLT='F' and tao.C_DATUM>=tcs.C_BELEPESDATUM
group by m.Tanulo, m.Tantargy, m.OsztalyCsoport
declare @cols as nvarchar(max),
@query as nvarchar(max),
@colsIn as nvarchar(max)
select @cols= isnull(@cols + ',','') +quotename(Tantargy) from (select distinct m.Tantargy as Tantargy from #mulasztas m) Tantargy
select @colsIn= isnull(@colsIn + ',','') +'convert(nvarchar(max),'+quotename(Tantargy) + ')+''%'' as '+quotename(nev) from (select distinct m.Tantargy as Tantargy, t.c_nev nev from #mulasztas m
inner join T_TANTARGY_OSSZES t on t.id=m.Tantargy) TantargyCols
set @query='
select fel.c_nyomtatasinev Tanulo, '+@colsIn+' from (select mulasztas.Tanulo, round(convert(float, mulasztas.Ossz)/convert(float, naplozott.Ossz)*100, 0) Osszes, mulasztas.Tantargy from #students s
inner join #mulasztas mulasztas on mulasztas.Tanulo=s.id
inner join #naplozott naplozott on naplozott.Tantargy=mulasztas.Tantargy and naplozott.OsztalyCsoport=mulasztas.OsztalyCsoport and naplozott.Tanulo=mulasztas.Tanulo)a
pivot (max(Osszes) for Tantargy in ('+@cols+'))pv
inner join t_felhasznalo_osszes fel on fel.id=Tanulo
order by fel.c_nyomtatasinev
'
EXEC sp_executesql @query
drop table #students
drop table #mulasztas
drop table #naplozott
END
GO