You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ITSM/.svn/pristine/1f/1fe15bb168b3c6cb90444112aed...

301 lines
18 KiB

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: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <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