USE [Vertragsverwaltung_20160404] GO /****** Object: StoredProcedure [dbo].[F18] Script Date: 02.12.2016 09:08:54 ******/ DROP PROCEDURE [dbo].[F18] GO /****** Object: StoredProcedure [dbo].[F18] Script Date: 02.12.2016 09:08:54 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [dbo].[F18] @von DATETIME = NULL , @bis DATETIME = NULL , @oestruktur INTEGER = NULL , @struktur_Ausschluss VARCHAR(255) = NULL , @Honoris_Ausschluss VARCHAR(255) = NULL AS BEGIN SET NOCOUNT on IF @von IS NULL SET @von = '01.01.2015 00:00:01' IF @bis IS NULL SET @bis = '30.05.2015 23:59:59' IF @oestruktur IS NULL SET @oestruktur = 25 IF @struktur_ausschluss IS NULL SET @struktur_ausschluss = '' IF @honoris_ausschluss IS NULL SET @honoris_ausschluss = '' DECLARE @dd1 VARCHAR(2) DECLARE @mm1 VARCHAR(2) DECLARE @yy1 VARCHAR(4) DECLARE @datum VARCHAR(255) SET @dd1 = DAY(@von) SET @mm1 = MONTH(@von) SET @yy1 = YEAR(@von) IF LEN(@dd1) < 2 SET @dd1 = '0' + @dd1 IF LEN(@mm1) < 2 SET @mm1 = '0' + @mm1 SET @datum = @yy1 + '-' + @mm1 + '-' + @dd1 + ' 00:00:00' SET @von = CONVERT(DATETIME, @datum, 20) SET @dd1 = DAY(@bis) SET @mm1 = MONTH(@bis) SET @yy1 = YEAR(@bis) IF LEN(@dd1) < 2 SET @dd1 = '0' + @dd1 IF LEN(@mm1) < 2 SET @mm1 = '0' + @mm1 SET @datum = @yy1 + '-' + @mm1 + '-' + @dd1 + ' 23:59:59' SET @bis = CONVERT(DATETIME, @datum, 20) DECLARE @tmpa TABLE ( tgnummer VARCHAR(255) , NAME VARCHAR(255) , kst VARCHAR(255) , akutell FLOAT , projektnr INT , projektname VARCHAR(255) ) DECLARE @tmpb TABLE ( tgnummer VARCHAR(255) , NAME VARCHAR(255) , kst VARCHAR(255) , akutell FLOAT , projektnr INT , projektname VARCHAR(255) ) DECLARE @tmpc TABLE ( [OE] [varchar](50) NULL , [OESort] [int] NULL , [Name] [varchar](50) NULL , [Vorname] [varchar](50) NULL , [Sortierung] [int] NULL , [TGNummer] [varchar](50) NULL , [Sort] [int] NULL , [Engagement_Effektiv] [float] NOT NULL , [PAufwand] [float] NULL , [RFC_300] [float] NULL , [CTB] [float] NULL , [RTB] [float] NULL , [RFC_200] [float] NULL , [Total] [float] NULL , [Soll] [float] NULL , [Prod] [numeric](18, 2) NULL , [Anteil_CTB] [numeric](18, 2) NULL , [Anteil_Rtb] [numeric](18, 2) NULL ) DECLARE @tmpd TABLE ( [OE] [varchar](50) NULL , [OESort] [int] NULL , [Name] [varchar](50) NULL , [Vorname] [varchar](50) NULL , [Sortierung] [int] NULL , [TGNummer] [varchar](50) NULL , [Sort] [int] NULL , [Engagement_Effektiv] [float] NOT NULL , [PAufwand] [float] NULL , [RFC_300] [float] NULL , [CTB] [float] NULL , [RTB] [float] NULL , [RFC_200] [float] NULL , [Total] [float] NULL , [Soll] [float] NULL , [Prod] [numeric](18, 2) NULL , [Anteil_CTB] [numeric](18, 2) NULL , [Anteil_Rtb] [numeric](18, 2) NULL ) DECLARE @f18 TABLE ( projektnr INT , projektname VARCHAR(255) , aktuell FLOAT , vormonat FLOAT , differenz FLOAT , neu bit , ctb int ) INSERT @tmpa EXEC sp_rpt_fhrlst_projekte_nach_ma @von, @bis, @oestruktur, @struktur_Ausschluss, @Honoris_Ausschluss --set @von = DATEADD(MONTH,-1,@von) SET @bis = DATEADD(MONTH, -1, @bis) INSERT @tmpb EXEC sp_rpt_fhrlst_projekte_nach_ma @von, @bis, @oestruktur, @struktur_Ausschluss, @Honoris_Ausschluss --SELECT projektnr, projektname, ROUND(SUM(akutell)/8,0) FROM @tmpa GROUP BY projektnr, projektname ORDER BY projektnr --SELECT projektnr, projektname, ROUND(SUM(akutell)/8,0) FROM @tmpb GROUP BY projektnr, projektname ORDER BY projektnr --set @von = DATEADD(MONTH, +1, @von) SET @bis = DATEADD(MONTH, +1, @bis) INSERT @tmpc EXEC sp_rpt_fhrlst_aufwand @von, @bis, @oestruktur, @struktur_Ausschluss, @Honoris_Ausschluss,null,'intern' --set @von = DATEADD(MONTH, -1, @von) SET @bis = DATEADD(MONTH, -1, @bis) INSERT @tmpd EXEC sp_rpt_fhrlst_aufwand @von, @bis, @oestruktur, @struktur_Ausschluss, @Honoris_Ausschluss,null,'intern' DECLARE @sum1 FLOAT DECLARE @sum2 FLOAT DECLARE @pnr VARCHAR(255) DECLARE @pn VARCHAR(255) DECLARE @summe FLOAT DECLARE xc CURSOR FOR SELECT projektnr, projektname, ROUND(SUM(akutell) / 8, 0) FROM @tmpb GROUP BY projektnr, projektname ORDER BY projektnr OPEN xc FETCH NEXT FROM xc INTO @pnr, @pn, @summe WHILE @@FETCH_STATUS = 0 BEGIN INSERT @f18 ( projektnr, projektname, aktuell, vormonat, differenz, neu ) VALUES ( @pnr, @pn, 0, @summe, 0, 0 ) FETCH NEXT FROM xc INTO @pnr, @pn, @summe END CLOSE xc DEALLOCATE xc DECLARE @rc INT DECLARE xc CURSOR FOR SELECT projektnr, projektname, ROUND(SUM(akutell) / 8, 0) FROM @tmpa GROUP BY projektnr, projektname ORDER BY projektnr OPEN xc FETCH NEXT FROM xc INTO @pnr, @pn, @summe WHILE @@FETCH_STATUS = 0 BEGIN SELECT @rc = COUNT(*) FROM @f18 WHERE projektnr = @pnr IF @rc = 0 BEGIN INSERT @f18 ( projektnr, projektname, aktuell, vormonat, differenz, neu ) VALUES ( @pnr, @pn, @summe, 0, 0, 1 ) END ELSE BEGIN UPDATE @f18 SET aktuell = @summe WHERE projektnr = @pnr END FETCH NEXT FROM xc INTO @pnr, @pn, @summe END CLOSE xc DEALLOCATE xc SELECT @sum1 = ROUND(SUM(ctb) / 8, 0) FROM @tmpc SELECT @sum2 = ROUND(SUM(ctb) / 8, 0) FROM @tmpd INSERT @f18 ( projektnr, projektname, aktuell, vormonat, differenz, neu ) VALUES ( 0, 'AU', @sum1, @sum2, @sum1 - @sum2, 0 ) UPDATE @f18 SET ctb = 1 SELECT @sum1 = ROUND(SUM(rtb) / 8, 2) FROM @tmpc SELECT @sum2 = ROUND(SUM(rtb) / 8, 2) FROM @tmpd INSERT @f18 ( projektnr, projektname, aktuell, vormonat, differenz, neu, ctb ) VALUES ( 0, 'IN', @sum1, @sum2, @sum1 - @sum2, 0, 0 ) DELETE FROM @tmpa DELETE FROM @tmpb --set @von = DATEADD(MONTH, +1, @von) SET @bis = DATEADD(MONTH, +1, @bis) PRINT @von PRINT @bis INSERT @tmpa EXEC sp_rpt_fhrlst_incidents_nach_ma @von, @bis, @oestruktur, @struktur_Ausschluss, @Honoris_Ausschluss --set @von = DATEADD(MONTH, -1, @von) SET @bis = DATEADD(MONTH, -1, @bis) INSERT @tmpb EXEC sp_rpt_fhrlst_incidents_nach_ma @von, @bis, @oestruktur, @struktur_Ausschluss, @Honoris_Ausschluss DECLARE xc CURSOR FOR SELECT projektnr, projektname, ROUND(SUM(akutell) / 8, 0) FROM @tmpb GROUP BY projektnr, projektname ORDER BY projektnr OPEN xc FETCH NEXT FROM xc INTO @pnr, @pn, @summe WHILE @@FETCH_STATUS = 0 BEGIN INSERT @f18 ( projektnr, projektname, aktuell, vormonat, differenz, neu,ctb ) VALUES ( @pnr, @pn, 0, @summe, 0, 0,0 ) FETCH NEXT FROM xc INTO @pnr, @pn, @summe END CLOSE xc DEALLOCATE xc DECLARE xc CURSOR FOR SELECT projektnr, projektname, ROUND(SUM(akutell) / 8, 0) FROM @tmpa GROUP BY projektnr, projektname ORDER BY projektnr OPEN xc FETCH NEXT FROM xc INTO @pnr, @pn, @summe WHILE @@FETCH_STATUS = 0 BEGIN SELECT @rc = COUNT(*) FROM @f18 WHERE projektnr = @pnr IF @rc = 0 BEGIN INSERT @f18 ( projektnr, projektname, aktuell, vormonat, differenz, neu,ctb ) VALUES ( @pnr, @pn, @summe, 0, 0, 1 ,0) END ELSE BEGIN UPDATE @f18 SET aktuell = @summe WHERE projektnr = @pnr END FETCH NEXT FROM xc INTO @pnr, @pn, @summe END CLOSE xc DEALLOCATE xc UPDATE @f18 SET differenz = aktuell - vormonat SELECT * FROM @f18 ORDER BY projektnr END GO