USE [Vertragsverwaltung] GO /****** Object: StoredProcedure [dbo].[sp_rpt_fhrlst_aufwand_WPI] Script Date: 01.03.2014 11:46:24 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [dbo].[sp_rpt_fhrlst_aufwand_WPI] @von DATETIME = NULL , @bis DATETIME = NULL , @oestruktur INTEGER = NULL , @struktur_Ausschluss VARCHAR(255) = NULL , @Honoris_Ausschluss VARCHAR(255) = NULL AS BEGIN IF @von IS NULL SET @von = '01.01.2013 00:00:00' IF @bis IS NULL SET @bis = '31.05.2013 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 +' 22:48:45' set @bis=convert(datetime,@datum,20) --'' SET @oestruktur=34 --'' SET @von = '01.02.2013 00:00:01' --'' SET @bis = '28.02.2013 23:59:50' --DECLARE @per DATETIME = NULL , -- @von DATETIME = NULL , -- @bis DATETIME = NULL --SET @per = '01.03.2013' --SET @von = '01.03.2013' --SET @bis = '31.03.2013' SET NOCOUNT ON; DECLARE @tmpa TABLE ( [TGNummer] [varchar](50) NULL , oenr INT , sortierung INT , START DATETIME , Ende DATETIME , [Paufwand] [float] NOT NULL , [RFC_300] [float] NOT NULL , [CTB] [float] NOT NULL , [RTB] [float] NOT NULL , RFC_200 FLOAT NOT NULL , [Total] [float] NOT NULL , [Soll] [float] NOT NULL , [Prod] [float] NOT NULL , [Anteil_CTB] [float] NOT NULL , [Anteil_RTB] [float] NOT NULL , Engagement_Effektiv FLOAT NOT NULL , Soll_Zeit FLOAT NOT NULL ) DECLARE @ansatz FLOAT SET @ansatz = 8.0 --IF @per IS NULL -- SET @per = GETDATE() --*************************************************************************** -- Relevante Mitarbeiter am Per-Datum --*************************************************************************** DECLARE @mnr INT DECLARE @rc INT DECLARE @mm INT DECLARE @yy INT DECLARE xm CURSOR FOR SELECT * FROM dbo.get_monatstabelle(@von, @bis) ORDER BY start_date OPEN xm FETCH NEXT FROM xm INTO @von, @bis WHILE @@FETCH_STATUS = 0 BEGIN DECLARE xc CURSOR FOR SELECT manr FROM ma WHERE aktiv = 1 AND gueltig_bis >= @bis OPEN xc FETCH NEXT FROM xc INTO @mnr WHILE @@FETCH_STATUS = 0 BEGIN SELECT @rc = COUNT(*) FROM dbo.MADetails WHERE manr = @mnr AND aktiv = 1 AND Gueltig_ab <= @von IF @rc > 0 BEGIN INSERT @tmpa SELECT TOP 1 dbo.MA.TGNummer, madetails.OENr, ma.sortierung, @von, @bis, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, dbo.get_anteil(engagement, MitarbeiterTypNr), dbo.get_arbeitstage(madetails.MADetailNr, year(@von),month(@von)) FROM dbo.MA LEFT OUTER JOIN dbo.MADetails ON dbo.MA.MANr = dbo.MADetails.MANr WHERE dbo.MADetails.manr = @mnr AND dbo.MADetails.Aktiv = 1 AND Gueltig_ab <= @von ORDER BY Gueltig_ab DESC END FETCH NEXT FROM xc INTO @mnr END CLOSE xc DEALLOCATE xc DECLARE @anzahl FLOAT DECLARE @ma VARCHAR(255) -- RTB SELECT dbo.Honoris_JOURNAL.DATUM, dbo.Honoris_JOURNAL.ANZAHLINT, dbo.Honoris_mitarbeiter.NAME, dbo.Honoris_mitarbeiter.VORNAME, dbo.Honoris_PROJEKT.KURZNAME, dbo.Honoris_PROJEKT.BEZEICHNUNG, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_JOURNAL.ERFDATUM, dbo.Honoris_PROJEKT.PROJEKT_NR INTO #tmphono FROM dbo.Honoris_JOURNAL INNER JOIN dbo.Honoris_PROJEKT ON dbo.Honoris_JOURNAL.PROJEKT_NR = dbo.Honoris_PROJEKT.PROJEKT_NR INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR WHERE ( dbo.honoris_projekt.bool2=1 --AND ( dbo.Honoris_PROJEKT.PROJEKT_NR >= 200 ) -- AND ( dbo.Honoris_PROJEKT.PROJEKT_NR < 300 ) ) AND dbo.Honoris_PROJEKT.PROJEKT_NR NOT IN ( SELECT item FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) ) DECLARE xc CURSOR FOR SELECT SUM(ANZAHLINT), MITARBEITER_ID FROM #tmphono WHERE ( DATUM >= @von AND DATUM <= @bis ) GROUP BY MITARBEITER_ID OPEN xc FETCH NEXT FROM xc INTO @anzahl, @ma WHILE @@FETCH_STATUS = 0 BEGIN UPDATE @tmpa SET rfc_200 = @anzahl WHERE tgnummer = @ma AND start = @von AND ende = @bis FETCH NEXT FROM xc INTO @anzahl, @ma END CLOSE xc DEALLOCATE xc DROP TABLE #tmpHono --CTB SELECT dbo.Honoris_JOURNAL.DATUM, dbo.Honoris_JOURNAL.ANZAHLINT, dbo.Honoris_mitarbeiter.NAME, dbo.Honoris_mitarbeiter.VORNAME, dbo.Honoris_PROJEKT.KURZNAME, dbo.Honoris_PROJEKT.BEZEICHNUNG, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_JOURNAL.ERFDATUM, dbo.Honoris_PROJEKT.PROJEKT_NR INTO #tmphono1 FROM dbo.Honoris_JOURNAL INNER JOIN dbo.Honoris_PROJEKT ON dbo.Honoris_JOURNAL.PROJEKT_NR = dbo.Honoris_PROJEKT.PROJEKT_NR INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR WHERE ( dbo.honoris_projekt.bool3=1 ) --AND ( dbo.Honoris_PROJEKT.PROJEKT_NR >= 300 ) -- AND ( dbo.Honoris_PROJEKT.PROJEKT_NR <= 399 )) AND dbo.Honoris_PROJEKT.PROJEKT_NR NOT IN ( SELECT item FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) ) DECLARE xc CURSOR FOR SELECT SUM(ANZAHLINT), MITARBEITER_ID FROM #tmphono1 WHERE ( DATUM >= @von AND DATUM <= @bis ) GROUP BY MITARBEITER_ID OPEN xc FETCH NEXT FROM xc INTO @anzahl, @ma WHILE @@FETCH_STATUS = 0 BEGIN UPDATE @tmpa SET rfc_300 = @anzahl WHERE tgnummer = @ma AND start = @von AND ende = @bis FETCH NEXT FROM xc INTO @anzahl, @ma END CLOSE xc DEALLOCATE xc DROP TABLE #tmphono1 -- Führung SELECT dbo.Honoris_JOURNAL.DATUM, dbo.Honoris_JOURNAL.ANZAHLINT, dbo.Honoris_mitarbeiter.NAME, dbo.Honoris_mitarbeiter.VORNAME, dbo.Honoris_PROJEKT.KURZNAME, dbo.Honoris_PROJEKT.BEZEICHNUNG, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_JOURNAL.ERFDATUM, dbo.Honoris_PROJEKT.PROJEKT_NR INTO #tmpHono2 FROM dbo.Honoris_JOURNAL INNER JOIN dbo.Honoris_PROJEKT ON dbo.Honoris_JOURNAL.PROJEKT_NR = dbo.Honoris_PROJEKT.PROJEKT_NR INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR WHERE (dbo.honoris_projekt.bool6=1 ) --AND ( dbo.Honoris_PROJEKT.PROJEKT_NR < 200 ) -- OR ( dbo.Honoris_PROJEKT.PROJEKT_NR > 399 )) AND dbo.Honoris_PROJEKT.PROJEKT_NR NOT IN ( SELECT item FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) ) DECLARE xc CURSOR FOR SELECT SUM(ANZAHLINT), MITARBEITER_ID FROM #tmpHono2 WHERE ( DATUM >= @von ) AND ( DATUM <= @bis ) GROUP BY MITARBEITER_ID OPEN xc FETCH NEXT FROM xc INTO @anzahl, @ma WHILE @@FETCH_STATUS = 0 BEGIN UPDATE @tmpa SET Paufwand = @anzahl WHERE tgnummer = @ma AND start = @von AND ende = @bis FETCH NEXT FROM xc INTO @anzahl, @ma END CLOSE xc DEALLOCATE xc DROP TABLE #tmpHono2 ---- IN -- DECLARE xc CURSOR -- FOR -- SELECT SUM(CalculatedValue) AS Expr1, ForUserID -- FROM dbo.TXP_LVer_IN_AU -- WHERE ( ExecutedDateTime >= @von -- AND ExecutedDateTime <= @bis -- ) -- AND ( Ticket_ID LIKE N'IN_%' ) -- GROUP BY ForUserID -- OPEN xc -- FETCH NEXT FROM xc INTO @anzahl, @ma -- WHILE @@FETCH_STATUS = 0 -- BEGIN -- UPDATE @tmpa -- SET rtb = @anzahl -- WHERE tgnummer = @ma -- AND start = @von -- AND ende = @bis -- FETCH NEXT FROM xc INTO @anzahl, @ma -- END -- CLOSE xc -- DEALLOCATE xc -- -- AU -- DECLARE xc CURSOR -- FOR -- SELECT SUM(CalculatedValue) AS Expr1, ForUserID -- FROM dbo.TXP_LVer_IN_AU -- WHERE ( ExecutedDateTime >= @von -- AND ExecutedDateTime <= @bis -- ) -- AND ( Ticket_ID LIKE N'AU_%' ) -- GROUP BY ForUserID -- OPEN xc -- FETCH NEXT FROM xc INTO @anzahl, @ma -- WHILE @@FETCH_STATUS = 0 -- BEGIN -- UPDATE @tmpa -- SET ctb = @anzahl -- WHERE tgnummer = @ma -- AND start = @von -- AND ende = @bis -- FETCH NEXT FROM xc INTO @anzahl, @ma -- END -- CLOSE xc -- DEALLOCATE xc FETCH NEXT FROM xm INTO @von, @bis END CLOSE xm DEALLOCATE xm UPDATE @tmpa --SET total = paufwand + rfc_300 + ctb + rtb + rfc_200 SET total = rfc_300 +rfc_200 -- Berechnen UPDATE @tmpa SET soll = ( soll_zeit * @ansatz ) / 100 * Engagement_Effektiv SELECT TOP ( 100 ) PERCENT dbo.OE.Bezeichnung AS OE, dbo.OE.Sortierung AS OESort, dbo.MA.Name, dbo.MA.Vorname, dbo.MA.Sortierung, a.TGNummer, a.START, a.ende, a.sortierung AS Expr1, a.Paufwand, a.RFC_300, a.CTB, a.RTB, a.RFC_200, a.Total, a.Soll, a.Prod, a.Anteil_CTB, a.Anteil_RTB, a.Engagement_Effektiv, a.Soll_Zeit INTO #tmpfhr FROM @tmpa a INNER JOIN dbo.MA ON a.TGNummer = dbo.MA.TGNummer INNER JOIN dbo.OE ON a.oenr = dbo.OE.OeNr WHERE dbo.OE.oenr IN ( SELECT id FROM dbo.fnkt_get_kpi_hierarchie(@oestruktur) ) AND dbo.oe.oenr NOT IN ( SELECT item FROM dbo.fnkt_split(@struktur_Ausschluss, ',', 1) ) ORDER BY OESort, dbo.MA.Sortierung, dbo.MA.Name SELECT OE, OESort, Name, Vorname, Sortierung, TGNummer, Expr1 AS Sort, Engagement_Effektiv, SUM(Paufwand) AS PAufwand, SUM(RFC_300) AS RFC_300, SUM(CTB) AS CTB, SUM(RTB) AS RTB, SUM(RFC_200) AS RFC_200, SUM(Total) AS Total, SUM(Soll) AS Soll, CONVERT(NUMERIC(18, 2), 0.00) AS Prod, CONVERT(NUMERIC(18, 2), 0.00) AS Anteil_CTB, CONVERT(NUMERIC(18, 2), 0.00) AS Anteil_Rtb INTO #tmpfhr1 FROM #tmpfhr GROUP BY OE, OESort, Name, Vorname, Sortierung, TGNummer, Expr1, Engagement_Effektiv UPDATE #tmpfhr1 SET prod = ROUND(total / soll * 100, 2) WHERE total > 0 AND soll > 0 UPDATE #tmpfhr1 SET Anteil_CTB = ROUND(( ( rfc_300 ) / Total ) * 100, 2) WHERE total > 0 AND ( rfc_300 ) > 0 UPDATE #tmpfhr1 SET Anteil_rtb = ROUND(( ( rfc_200 ) / total ) * 100, 2) WHERE total > 0 AND ( rfc_200 ) > 0 PRINT 'a' SELECT * FROM #tmpfhr1 ORDER BY OESort, Sortierung, Name DROP TABLE #tmpfhr DROP TABLE #tmpfhr1 END GO /****** Object: StoredProcedure [dbo].[sp_rpt_fhrlst_aufwand] Script Date: 01.03.2014 11:46:24 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [dbo].[sp_rpt_fhrlst_aufwand] @von DATETIME = NULL , @bis DATETIME = NULL , @oestruktur INTEGER = NULL , @struktur_Ausschluss VARCHAR(255) = NULL , @Honoris_Ausschluss VARCHAR(255) = NULL AS BEGIN IF @von IS NULL SET @von = '01.01.2013 00:00:01' IF @bis IS NULL SET @bis = '31.12.2013 23:59:50' IF @oestruktur IS NULL SET @oestruktur = 24 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) --'' SET @oestruktur=34 --'' SET @von = '01.02.2013 00:00:01' --'' SET @bis = '28.02.2013 23:59:50' --DECLARE @per DATETIME = NULL , -- @von DATETIME = NULL , -- @bis DATETIME = NULL --SET @per = '01.03.2013' --SET @von = '01.03.2013' --SET @bis = '31.03.2013' SET NOCOUNT ON; DECLARE @tmpa TABLE ( [TGNummer] [varchar](50) NULL , oenr INT , sortierung INT , START DATETIME , Ende DATETIME , [Paufwand] [float] NOT NULL , [RFC_300] [float] NOT NULL , [CTB] [float] NOT NULL , [RTB] [float] NOT NULL , RFC_200 FLOAT NOT NULL , [Total] [float] NOT NULL , [Soll] [float] NOT NULL , [Prod] [float] NOT NULL , [Anteil_CTB] [float] NOT NULL , [Anteil_RTB] [float] NOT NULL , Engagement_Effektiv FLOAT NOT NULL , Soll_Zeit FLOAT NOT NULL ) DECLARE @ansatz FLOAT SET @ansatz = 8.0 --IF @per IS NULL -- SET @per = GETDATE() --*************************************************************************** -- Relevante Mitarbeiter am Per-Datum --*************************************************************************** DECLARE @mnr INT DECLARE @rc INT DECLARE @mm INT DECLARE @yy INT DECLARE xm CURSOR FOR SELECT * FROM dbo.get_monatstabelle(@von, @bis) ORDER BY start_date OPEN xm FETCH NEXT FROM xm INTO @von, @bis WHILE @@FETCH_STATUS = 0 BEGIN DECLARE xc CURSOR FOR SELECT manr FROM ma WHERE aktiv = 1 AND gueltig_bis >= @bis OPEN xc FETCH NEXT FROM xc INTO @mnr WHILE @@FETCH_STATUS = 0 BEGIN SELECT @rc = COUNT(*) FROM dbo.MADetails WHERE manr = @mnr AND aktiv = 1 AND Gueltig_ab <= @von IF @rc > 0 BEGIN INSERT @tmpa SELECT TOP 1 dbo.MA.TGNummer, madetails.OENr, ma.sortierung, @von, @bis, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, dbo.get_anteil(engagement, MitarbeiterTypNr), dbo.get_arbeitstage(madetails.MADetailNr, year(@von),month(@von)) FROM dbo.MA LEFT OUTER JOIN dbo.MADetails ON dbo.MA.MANr = dbo.MADetails.MANr WHERE dbo.MADetails.manr = @mnr AND dbo.MADetails.Aktiv = 1 AND Gueltig_ab <= @von ORDER BY Gueltig_ab DESC END FETCH NEXT FROM xc INTO @mnr END CLOSE xc DEALLOCATE xc DECLARE @anzahl FLOAT DECLARE @ma VARCHAR(255) -- Honris 200 SELECT dbo.Honoris_JOURNAL.DATUM, dbo.Honoris_JOURNAL.ANZAHLINT, dbo.Honoris_mitarbeiter.NAME, dbo.Honoris_mitarbeiter.VORNAME, dbo.Honoris_PROJEKT.KURZNAME, dbo.Honoris_PROJEKT.BEZEICHNUNG, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_JOURNAL.ERFDATUM, dbo.Honoris_PROJEKT.PROJEKT_NR INTO #tmphono FROM dbo.Honoris_JOURNAL INNER JOIN dbo.Honoris_PROJEKT ON dbo.Honoris_JOURNAL.PROJEKT_NR = dbo.Honoris_PROJEKT.PROJEKT_NR INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR WHERE (dbo.honoris_projekt.BOOL2=1 --( dbo.Honoris_PROJEKT.PROJEKT_NR >= 200 ) --AND ( dbo.Honoris_PROJEKT.PROJEKT_NR < 300 ) ) AND dbo.Honoris_PROJEKT.PROJEKT_NR NOT IN ( SELECT item FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) ) DECLARE xc CURSOR FOR SELECT SUM(ANZAHLINT), MITARBEITER_ID FROM #tmphono WHERE ( DATUM >= @von AND DATUM <= @bis ) GROUP BY MITARBEITER_ID OPEN xc FETCH NEXT FROM xc INTO @anzahl, @ma WHILE @@FETCH_STATUS = 0 BEGIN UPDATE @tmpa SET rfc_200 = @anzahl WHERE tgnummer = @ma AND start = @von AND ende = @bis FETCH NEXT FROM xc INTO @anzahl, @ma END CLOSE xc DEALLOCATE xc DROP TABLE #tmpHono -- Honris 300 SELECT dbo.Honoris_JOURNAL.DATUM, dbo.Honoris_JOURNAL.ANZAHLINT, dbo.Honoris_mitarbeiter.NAME, dbo.Honoris_mitarbeiter.VORNAME, dbo.Honoris_PROJEKT.KURZNAME, dbo.Honoris_PROJEKT.BEZEICHNUNG, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_JOURNAL.ERFDATUM, dbo.Honoris_PROJEKT.PROJEKT_NR INTO #tmphono1 FROM dbo.Honoris_JOURNAL INNER JOIN dbo.Honoris_PROJEKT ON dbo.Honoris_JOURNAL.PROJEKT_NR = dbo.Honoris_PROJEKT.PROJEKT_NR INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR WHERE (dbo.honoris_PROJEKT.BOOL3=1 and ( dbo.Honoris_PROJEKT.PROJEKT_NR >= 300 ) AND ( dbo.Honoris_PROJEKT.PROJEKT_NR <= 399 )) AND dbo.Honoris_PROJEKT.PROJEKT_NR NOT IN ( SELECT item FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) ) DECLARE xc CURSOR FOR SELECT SUM(ANZAHLINT), MITARBEITER_ID FROM #tmphono1 WHERE ( DATUM >= @von AND DATUM <= @bis ) GROUP BY MITARBEITER_ID OPEN xc FETCH NEXT FROM xc INTO @anzahl, @ma WHILE @@FETCH_STATUS = 0 BEGIN UPDATE @tmpa SET rfc_300 = @anzahl WHERE tgnummer = @ma AND start = @von AND ende = @bis FETCH NEXT FROM xc INTO @anzahl, @ma END CLOSE xc DEALLOCATE xc DROP TABLE #tmphono1 -- Honoris <> 300 SELECT dbo.Honoris_JOURNAL.DATUM, dbo.Honoris_JOURNAL.ANZAHLINT, dbo.Honoris_mitarbeiter.NAME, dbo.Honoris_mitarbeiter.VORNAME, dbo.Honoris_PROJEKT.KURZNAME, dbo.Honoris_PROJEKT.BEZEICHNUNG, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_JOURNAL.ERFDATUM, dbo.Honoris_PROJEKT.PROJEKT_NR INTO #tmpHono2 FROM dbo.Honoris_JOURNAL INNER JOIN dbo.Honoris_PROJEKT ON dbo.Honoris_JOURNAL.PROJEKT_NR = dbo.Honoris_PROJEKT.PROJEKT_NR INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR WHERE (dbo.honoris_projekt.BOOL3=1 and ( dbo.Honoris_PROJEKT.PROJEKT_NR < 200 ) OR ( dbo.Honoris_PROJEKT.PROJEKT_NR > 399 )) AND dbo.Honoris_PROJEKT.PROJEKT_NR NOT IN ( SELECT item FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) ) DECLARE xc CURSOR FOR SELECT SUM(ANZAHLINT), MITARBEITER_ID FROM #tmpHono2 WHERE ( DATUM >= @von ) AND ( DATUM <= @bis ) GROUP BY MITARBEITER_ID OPEN xc FETCH NEXT FROM xc INTO @anzahl, @ma WHILE @@FETCH_STATUS = 0 BEGIN UPDATE @tmpa SET Paufwand = @anzahl WHERE tgnummer = @ma AND start = @von AND ende = @bis FETCH NEXT FROM xc INTO @anzahl, @ma END CLOSE xc DEALLOCATE xc DROP TABLE #tmpHono2 -- IN DECLARE xc CURSOR FOR SELECT SUM(CalculatedValue) AS Expr1, ForUserID FROM dbo.TXP_LVer_IN_AU WHERE ( ExecutedDateTime >= @von AND ExecutedDateTime <= @bis ) AND ( Ticket_ID LIKE N'IN_%' ) GROUP BY ForUserID OPEN xc FETCH NEXT FROM xc INTO @anzahl, @ma WHILE @@FETCH_STATUS = 0 BEGIN UPDATE @tmpa SET rtb = @anzahl WHERE tgnummer = @ma AND start = @von AND ende = @bis FETCH NEXT FROM xc INTO @anzahl, @ma END CLOSE xc DEALLOCATE xc -- AU DECLARE xc CURSOR FOR SELECT SUM(CalculatedValue) AS Expr1, ForUserID FROM dbo.TXP_LVer_IN_AU WHERE ( ExecutedDateTime >= @von AND ExecutedDateTime <= @bis ) AND ( Ticket_ID LIKE N'AU_%' ) GROUP BY ForUserID OPEN xc FETCH NEXT FROM xc INTO @anzahl, @ma WHILE @@FETCH_STATUS = 0 BEGIN UPDATE @tmpa SET ctb = @anzahl WHERE tgnummer = @ma AND start = @von AND ende = @bis FETCH NEXT FROM xc INTO @anzahl, @ma END CLOSE xc DEALLOCATE xc FETCH NEXT FROM xm INTO @von, @bis END CLOSE xm DEALLOCATE xm UPDATE @tmpa SET total = paufwand + rfc_300 + ctb + rtb + rfc_200 -- Berechnen UPDATE @tmpa SET soll = ( soll_zeit * @ansatz ) / 100 * Engagement_Effektiv SELECT * FROM @tmpa WHERE tgnummer='tg4507' SELECT TOP ( 100 ) PERCENT dbo.OE.Bezeichnung AS OE, dbo.OE.Sortierung AS OESort, dbo.MA.Name, dbo.MA.Vorname, dbo.MA.Sortierung, a.TGNummer, a.START, a.ende, a.sortierung AS Expr1, a.Paufwand, a.RFC_300, a.CTB, a.RTB, a.RFC_200, a.Total, a.Soll, a.Prod, a.Anteil_CTB, a.Anteil_RTB, a.Engagement_Effektiv, a.Soll_Zeit INTO #tmpfhr FROM @tmpa a INNER JOIN dbo.MA ON a.TGNummer = dbo.MA.TGNummer INNER JOIN dbo.OE ON a.oenr = dbo.OE.OeNr WHERE dbo.OE.oenr IN ( SELECT id FROM dbo.fnkt_get_kpi_hierarchie(@oestruktur) ) AND dbo.oe.oenr NOT IN ( SELECT item FROM dbo.fnkt_split(@struktur_Ausschluss, ',', 1) ) ORDER BY OESort, dbo.MA.Sortierung, dbo.MA.Name SELECT OE, OESort, Name, Vorname, Sortierung, TGNummer, Expr1 AS Sort, Engagement_Effektiv, SUM(Paufwand) AS PAufwand, SUM(RFC_300) AS RFC_300, SUM(CTB) AS CTB, SUM(RTB) AS RTB, SUM(RFC_200) AS RFC_200, SUM(Total) AS Total, SUM(Soll) AS Soll, CONVERT(NUMERIC(18, 2), 0.00) AS Prod, CONVERT(NUMERIC(18, 2), 0.00) AS Anteil_CTB, CONVERT(NUMERIC(18, 2), 0.00) AS Anteil_Rtb INTO #tmpfhr1 FROM #tmpfhr GROUP BY OE, OESort, Name, Vorname, Sortierung, TGNummer, Expr1, Engagement_Effektiv UPDATE #tmpfhr1 SET prod = ROUND(total / soll * 100, 2) WHERE total > 0 AND soll > 0 UPDATE #tmpfhr1 SET Anteil_CTB = ROUND(( ( paufwand + rfc_300 + ctb ) / Total ) * 100, 2) WHERE total > 0 AND ( paufwand + rfc_300 + ctb ) > 0 UPDATE #tmpfhr1 SET Anteil_rtb = ROUND(( ( rfc_200 + rtb ) / total ) * 100, 2) WHERE total > 0 AND ( rfc_200 + rtb ) > 0 SELECT * FROM #tmpfhr1 ORDER BY OESort, Sortierung, Name DROP TABLE #tmpfhr DROP TABLE #tmpfhr1 END GO