Files
2024-03-13 00:33:46 +01:00

101 lines
4.3 KiB
Transact-SQL

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Hoffmann Zsolt>
-- Create date: <2016.07.27>
-- Description: <Osztályok éves óraszáma>
-- =============================================
IF OBJECT_ID('sp_GetOsztalyokEvesOraszama') IS NOT NULL BEGIN
DROP PROCEDURE sp_GetOsztalyokEvesOraszama
END
GO
CREATE PROCEDURE [sp_GetOsztalyokEvesOraszama]
@tanevID int
AS
BEGIN
DECLARE @osztalyID INT = 0
DECLARE @osztalyNev VARCHAR(255)
DECLARE @HetekSzama INT = 0
SET NOCOUNT ON;
select
@HetekSzama = DATEDIFF(ww, T_TANEV_OSSZES.C_ELSOTANITASINAP, T_TANEV_OSSZES.C_UTOLSOTANITASINAP)
from T_TANEV_OSSZES
where TOROLT = 'F'
and ID = @tanevID
select
T_OSZTALYCSOPORT_OSSZES.ID,
T_OSZTALYCSOPORT_OSSZES.C_NEV Nev
into #Osztalyok
from T_OSZTALYCSOPORT_OSSZES
inner join T_OSZTALY_OSSZES on T_OSZTALY_OSSZES.ID = T_OSZTALYCSOPORT_OSSZES.ID and T_OSZTALY_OSSZES. TOROLT = 'F'
where T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F'
and T_OSZTALYCSOPORT_OSSZES.C_TANEVID = @tanevID
SELECT * FROM #Osztalyok
WHILE (1 = 1)
BEGIN
SELECT TOP 1 @osztalyID=ID, @osztalyNev = Nev FROM #Osztalyok Osztalyok WHERE ID > @osztalyID ORDER BY ID
IF @@ROWCOUNT = 0
BEGIN
BREAK;
END
--A WHILE CIKLUS MIDEN LÉPÉSÉBEN VISSZAAD EGY TÁBLÁT
select
T_FELHASZNALO_OSSZES.C_NYOMTATASINEV TanuloNev,
T_TANTARGY_OSSZES.C_NEV TantargyNev,
case
when T_TANTARGY_OSSZES.C_FOTARGYE = 'T' then T_TANTARGY_OSSZES.C_NEV
when T_TANTARGY_OSSZES.C_FOTARGYE = 'F' and T_TANTARGY_OSSZES.C_FOTARGYID is not null then FT.C_NEV
else ''
end as FotargyNev,
isnull(case
when T_ORATERVTARGY_OSSZES.C_EVESORASZAM = 0 then HETEK.HetekSzama * T_FOGLALKOZAS_OSSZES.C_ORASZAM
when T_ORATERVTARGY_OSSZES.C_EVESORASZAM > 0 and (HETEK.HetekSzama * T_FOGLALKOZAS_OSSZES.C_ORASZAM) > T_ORATERVTARGY_OSSZES.C_EVESORASZAM then HETEK.HetekSzama * T_FOGLALKOZAS_OSSZES.C_ORASZAM
else T_ORATERVTARGY_OSSZES.C_EVESORASZAM
end, 0) as EvesOraszam
from T_FOGLALKOZAS_OSSZES
inner join T_TANULOCSOPORT_OSSZES on T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID and T_TANULOCSOPORT_OSSZES.TOROLT = 'F'
inner join T_OSZTALYCSOPORT_OSSZES on T_OSZTALYCSOPORT_OSSZES.ID = T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID and T_OSZTALYCSOPORT_OSSZES.TOROLT = 'F'
inner join T_FELHASZNALO_OSSZES on T_FELHASZNALO_OSSZES.ID = T_TANULOCSOPORT_OSSZES.C_TANULOID and T_FELHASZNALO_OSSZES.TOROLT = 'F'
inner join T_TANTARGY_OSSZES on T_TANTARGY_OSSZES.ID = T_FOGLALKOZAS_OSSZES.C_TANTARGYID and T_TANTARGY_OSSZES.TOROLT = 'F'
left join T_TANTARGY_OSSZES FT on FT.ID = T_TANTARGY_OSSZES.C_FOTARGYID and FT.TOROLT = 'F'
left join T_ORATERV_OSSZES on T_ORATERV_OSSZES.C_EVFOLYAM = T_OSZTALYCSOPORT_OSSZES.C_EVFOLYAMTIPUSA
and T_ORATERV_OSSZES.C_INTEZMENYID = T_FOGLALKOZAS_OSSZES.C_INTEZMENYID
and T_ORATERV_OSSZES.C_TANEVID = @tanevID
and T_ORATERV_OSSZES.TOROLT = 'F'
left join T_ORATERVTARGY_OSSZES on T_ORATERVTARGY_OSSZES.C_ORATERVID = T_ORATERV_OSSZES.ID
and T_ORATERVTARGY_OSSZES.C_TANTARGYID = T_TANTARGY_OSSZES.ID
and T_ORATERVTARGY_OSSZES.TOROLT = 'F'
left join
(
select
F.ID TanuloId,
case
when TCS.C_BELEPESDATUM is not null and TCS.C_KILEPESDATUM is null then DATEDIFF(WW, TCS.C_BELEPESDATUM, TE.C_UTOLSOTANITASINAP)
when TCS.C_BELEPESDATUM is null and TCS.C_KILEPESDATUM is not null then DATEDIFF(WW, TE.C_ELSOTANITASINAP, TCS.C_KILEPESDATUM)
else DATEDIFF(WW, TCS.C_BELEPESDATUM, TCS.C_KILEPESDATUM)
end as HetekSzama
from T_FELHASZNALO_OSSZES F
inner join T_TANULOCSOPORT_OSSZES TCS on TCS.C_TANULOID = F.ID and TCS.TOROLT = 'F'
inner join T_TANEV_OSSZES TE on TE.ID = F.C_TANEVID and TE.TOROLT = 'F'
where F.TOROLT = 'F'
and TE.ID = @tanevID
and ((TCS.C_BELEPESDATUM is not null and TCS.C_BELEPESDATUM > TE.C_ELSOTANITASINAP)
or (TCS.C_KILEPESDATUM is not null and TCS.C_KILEPESDATUM < TE.C_UTOLSOTANITASINAP))
) HETEK on HETEK.TanuloId = T_FELHASZNALO_OSSZES.ID
where T_FOGLALKOZAS_OSSZES.TOROLT = 'F'
and T_FOGLALKOZAS_OSSZES.C_TANEVID = @tanevID
and T_TANULOCSOPORT_OSSZES.C_OSZTALYCSOPORTID = @osztalyID
order by T_FOGLALKOZAS_OSSZES.C_NEV, T_TANTARGY_OSSZES.C_NEV
END
DROP TABLE #Osztalyok
END