301 lines
18 KiB
Transact-SQL
301 lines
18 KiB
Transact-SQL
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
|