SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF OBJECT_ID('[dbo].[sp_GetTeremOrarend]') IS NOT NULL BEGIN DROP PROCEDURE [dbo].[sp_GetTeremOrarend] END GO CREATE PROCEDURE [dbo].[sp_GetTeremOrarend] @TeremId int, @TanevId int AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. -- Insert statements for procedure here -- �rarend IF OBJECT_ID('tempdb..#tempszorzat') IS NOT NULL drop table #tempszorzat IF OBJECT_ID('tempdb..#orarend') IS NOT NULL drop table #orarend SELECT T_INTEZMENYADATOK_OSSZES.C_NEV IntezmenyNeve ,T_INTEZMENYADATOK_OSSZES.C_OMKOD IntezmenyOMKod FROM T_INTEZMENYADATOK_OSSZES WHERE T_INTEZMENYADATOK_OSSZES.TOROLT = 'F' AND T_INTEZMENYADATOK_OSSZES.C_TANEVID = @TanevId DECLARE @intezmenyid int = (SELECT C_INTEZMENYID FROM T_TEREM_OSSZES WHERE id = @TeremId) DECLARE @AktivtanevId INT = (SELECT ID FROM T_TANEV_OSSZES TANEV WHERE C_AKTIV='T' AND C_INTEZMENYID=@IntezmenyId) DECLARE @UtolsoNap DATE = (SELECT TOP 1 C_NAPDATUMA FROM T_NAPTARINAP_OSSZES WHERE C_NAPTIPUSA=1395 AND C_INTEZMENYID=@intezmenyId AND C_TANEVID=@tanevid AND TOROLT='F') DECLARE @HetEleje DATE DECLARE @HetVege DATE IF (@tanevId = @AktivtanevId AND GETDATE() <= @UtolsoNap) BEGIN SET @HetEleje =(SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, NH.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid and nh.C_INTEZMENYID=@intezmenyId) SET @HetVege =(SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE CONVERT(DATE, GETDATE())>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND CONVERT(DATE, GETDATE())<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) and nh.TOROLT='F' and nh.C_TANEVID=@tanevid and nh.C_INTEZMENYID=@intezmenyId) END ELSE BEGIN SET @HetEleje =(SELECT TOP 1 nh.C_HETKEZDONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId AND NH.C_INTEZMENYID=@intezmenyId) SET @HetVege =(SELECT TOP 1 nh.C_HETUTOLSONAPJA FROM T_NAPTARIHET_OSSZES nh WHERE @UtolsoNap>=CONVERT(DATE, nh.C_HETKEZDONAPJA) AND @UtolsoNap<=CONVERT(DATE, nh.C_HETUTOLSONAPJA) AND nh.TOROLT='F' AND nh.C_TANEVID=@tanevId AND NH.C_INTEZMENYID=@intezmenyId) END DECLARE @tmpTable TABLE (oraszam INT,hetirend INT, [1408] NVARCHAR(MAX), [1409] NVARCHAR(MAX), [1410] NVARCHAR(MAX), [1411] NVARCHAR(MAX), [1412] NVARCHAR(MAX), [1413] NVARCHAR(MAX)) SELECT * INTO #tempszorzat FROM (SELECT ID AS Hetnapja FROM T_DICTIONARYITEMBASE_OSSZES WHERE id BETWEEN 1408 AND 1413 AND torolt = 'F' AND C_TANEVID = @TanevId) napok,(SELECT C_oraszam AS Oraszam FROM T_ORARENDIORA_OSSZES WHERE TOROLT = 'F' AND C_TANEVID = @TanevId AND C_INTEZMENYID=@intezmenyid) as oraszam DECLARE @ID INT = 0 WHILE (1 = 1) BEGIN IF OBJECT_ID('tempdb..#orarend') IS NOT NULL drop table #orarend SELECT TOP 1 @ID = ID FROM T_HETIRENDTIPUS_OSSZES WHERE TOROLT ='F' and ID != 1554 and ID > @ID and C_ALTANEVID = @TanevId ORDER BY ID IF @@ROWCOUNT = 0 BREAK; SELECT #tempszorzat.Hetnapja,#tempszorzat.Oraszam, (case WHEN orak.HetiRend is null THEN @ID ELSE orak.HetiRend END) as Hetirend ,orak.ADAT Into #orarend from #tempszorzat left join ( SELECT ora.C_HETIREND HetiRend, ora.C_HETNAPJA HetNapja, ora.C_ORASZAM Oraszam, STUFF((select ', '+t.c_nev+'- '+f.c_nev from T_ORARENDIORA_OSSZES bo inner join T_FOGLALKOZAS_OSSZES f on f.id=bo.C_FOGLALKOZASID inner join T_TEREM_OSSZES t on t.id=bo.c_teremid where bo.C_HETNAPJA=ora.C_HETNAPJA and bo.C_ORASZAM=ora.C_ORASZAM and bo.C_HETIREND=ora.C_HETIREND AND ((bo.C_ORAERVENYESSEGKEZDETE<=@HetEleje) and (bo.C_ORAERVENYESSEGVEGE>=@HetVege)or (bo.C_ORAERVENYESSEGKEZDETE>=@HetEleje) and (bo.C_ORAERVENYESSEGKEZDETE<=@HetVege)) AND bo.C_TEREMID=@teremId AND bo.torolt='F' FOR XML PATH(''), TYPE).value('.','NVARCHAR(MAX)'),1,2,' ') Adat FROM T_ORARENDIORA_OSSZES ora JOIN T_FOGLALKOZAS_OSSZES ON T_FOGLALKOZAS_OSSZES.ID = ora.C_FOGLALKOZASID JOIN T_TANTARGY_OSSZES targy ON targy.ID = T_FOGLALKOZAS_OSSZES.C_TANTARGYID JOIN T_FOGLALKOZASOK_TANAROK ON T_FOGLALKOZAS_OSSZES.ID = T_FOGLALKOZASOK_TANAROK.C_FOGLALKOZASOKID JOIN T_FELHASZNALO_OSSZES tanar ON T_FOGLALKOZASOK_TANAROK.C_TANAROKID = tanar.ID JOIN T_OSZTALYCSOPORT_OSSZES OSZTCSOP ON OSZTCSOP.ID = T_FOGLALKOZAS_OSSZES.C_OSZTALYCSOPORTID WHERE ora.TOROLT = 'F' AND ora.C_TEREMID = @TeremId AND ora.C_TANEVID = @TanevId GROUP BY ora.C_HETIREND, ora.C_HETNAPJA, ora.C_ORASZAM,OSZTCSOP.C_NEV, targy.C_NEV, tanar.C_NYOMTATASINEV,T_FOGLALKOZAS_OSSZES.ID) orak on #tempszorzat.Oraszam = orak.Oraszam and (#tempszorzat.HetNapja = orak.HetNapja or orak.HetNapja = 1554) INSERT INTO @tmpTable SELECT * FROM ( SELECT oraszam,hetnapja,adat, @ID AS Hetirend FROM #orarend WHERE Hetirend = @ID OR Hetirend = 1554 ) o1 PIVOT ( MAX (adat) FOR hetnapja IN ([1408], [1409], [1410], [1411], [1412], [1413]) ) p1 END SELECT * FROM @tmpTable IF OBJECT_ID('tempdb..#tempszorzat') IS NOT NULL DROP TABLE #tempszorzat IF OBJECT_ID('tempdb..#orarend') IS NOT NULL DROP TABLE #orarend END GO