USE [Vertragsverwaltung_20160404] GO /****** Object: StoredProcedure [dbo].[sp_rpt_fhrlst_incidents_nach_ma_wpi] Script Date: 02.12.2016 09:08:53 ******/ DROP PROCEDURE [dbo].[sp_rpt_fhrlst_incidents_nach_ma_wpi] GO /****** Object: StoredProcedure [dbo].[sp_rpt_fhrlst_incidents_nach_ma_wpi] Script Date: 02.12.2016 09:08:55 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= CREATE PROCEDURE [dbo].[sp_rpt_fhrlst_incidents_nach_ma_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:50' IF @oestruktur IS NULL SET @oestruktur = 25 IF @struktur_ausschluss IS NULL SET @struktur_ausschluss = '31' IF @honoris_ausschluss IS NULL SET @honoris_ausschluss = '2' 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 NOCOUNT ON; DECLARE @tmpa TABLE ( [TGNummer] [varchar](50) NULL , NAME VARCHAR(255) , KST VARCHAR(255) , START DATETIME , Ende DATETIME , anzahl FLOAT , ProjektNr int , Projektname VARCHAR(255) , oenr INT ) DECLARE @ansatz FLOAT SET @ansatz = 8.0 --IF @per IS NULL -- SET @per = GETDATE() --*************************************************************************** -- Relevante Mitarbeiter am Per-Datum --*************************************************************************** DECLARE @mnr INT DECLARE @tgnummer VARCHAR(255) DECLARE @rc INT DECLARE @mm INT DECLARE @yy INT DECLARE @oe 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, TGNummer FROM ma WHERE aktiv = 1 AND gueltig_bis >= @bis OPEN xc FETCH NEXT FROM xc INTO @mnr, @tgnummer 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 SELECT @oe = oenr FROM dbo.MADetails WHERE manr = @mnr AND aktiv = 1 AND Gueltig_ab <= @von INSERT @tmpa SELECT dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_mitarbeiter.NAME + ' ' + dbo.Honoris_mitarbeiter.VORNAME AS Name, dbo.Honoris_mitarbeiter.KST, @von, @bis, SUM(dbo.Honoris_JOURNAL.ANZAHLINT) AS Anzahl, dbo.Honoris_PROJEKT.PROJEKT_NR, dbo.Honoris_PROJEKT.kurzname, @oe FROM dbo.Honoris_PROJEKT INNER JOIN dbo.Honoris_JOURNAL ON dbo.Honoris_PROJEKT.PROJEKT_NR = dbo.Honoris_JOURNAL.PROJEKT_NR INNER JOIN dbo.Honoris_mitarbeiter ON dbo.Honoris_JOURNAL.MITARBEITER_NR = dbo.Honoris_mitarbeiter.MITARBEITER_NR WHERE ( dbo.Honoris_JOURNAL.DATUM >= @von ) AND ( dbo.Honoris_JOURNAL.DATUM <= @bis ) AND dbo.Honoris_mitarbeiter.MITARBEITER_id = @tgnummer AND honoris_projekt.bool4=1 GROUP BY dbo.Honoris_PROJEKT.PROJEKT_NR, dbo.Honoris_PROJEKT.kurzname, dbo.Honoris_mitarbeiter.MITARBEITER_ID, dbo.Honoris_mitarbeiter.NAME + ' ' + dbo.Honoris_mitarbeiter.VORNAME, dbo.Honoris_mitarbeiter.KST END FETCH NEXT FROM xc INTO @mnr, @tgnummer END CLOSE xc DEALLOCATE xc FETCH NEXT FROM xm INTO @von, @bis END CLOSE xm DEALLOCATE xm DELETE FROM @tmpa WHERE projektnr IN ( SELECT item FROM dbo.fnkt_split(@Honoris_Ausschluss, ',', 1) ) DELETE FROM @tmpa WHERE oenr IN ( SELECT item FROM dbo.fnkt_split(@struktur_Ausschluss, ',', 1) ) DELETE FROM @tmpa WHERE oenr NOT IN ( SELECT id FROM dbo.fnkt_get_kpi_hierarchie(@oestruktur) ) --SELECT a.* --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 dbo.MA.Name SELECT TOP (100) PERCENT TGNummer, NAME, KST, SUM(anzahl) AS Summe, ProjektNr, Projektname FROM @tmpa GROUP BY TGNummer, NAME, KST, ProjektNr, Projektname ORDER BY tgnummer, ProjektNr END GO