SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: <2016.07.27> -- Description: -- ============================================= 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