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/46/460d770d545036d810a9353b85c...

331 lines
26 KiB

USE [Vertragsverwaltung_20160404]
GO
/****** Object: StoredProcedure [dbo].[sp_rpt_fhrlst_Anzahl] Script Date: 02.12.2016 09:08:53 ******/
DROP PROCEDURE [dbo].[sp_rpt_fhrlst_Anzahl]
GO
/****** Object: StoredProcedure [dbo].[sp_rpt_fhrlst_Anzahl] Script Date: 02.12.2016 09:08:55 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [dbo].[sp_rpt_fhrlst_Anzahl]
@von DATETIME = NULL ,
@bis DATETIME = NULL,
@OEStruktur INT = NULL,
@struktur_Ausschluss VARCHAR(255) = NULL
AS
BEGIN
IF @von IS NULL
SET @von = '01.03.2013'
IF @bis IS NULL
SET @bis = '26.07.2013'
IF @oestruktur IS NULL
SET @oestruktur=24
IF @struktur_ausschluss IS NULL
SET @struktur_ausschluss = ''
--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'
DECLARE @save_von DATETIME
DECLARE @save_bis datetime
SET @save_von=@von
SET @save_bis=@bis
SET NOCOUNT ON;
DECLARE @tmpa TABLE
(
[TGNummer] [varchar](50) NULL ,
oenr INT ,
sortierung INT ,
START DATETIME ,
Ende DATETIME ,
[AU_offen] [INT] NOT NULL ,
[AU_Geschlossen] [INT] NOT NULL ,
[IN_Offen] [INT] NOT NULL ,
[IN_Geschlossen] [INT] NOT NULL ,
[IN_Langlaeufer] [INT] NOT NULL ,
[IN_Aufwand] [float] NOT NULL ,
[IN_GT_1PT] INT NOT NULL
)
DECLARE @ansatz FLOAT
SET @ansatz = 8.5
--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, 0, 0, 0, 0, 0.00, 0
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
AND madetails.oenr IN (SELECT id FROM dbo.fnkt_get_kpi_hierarchie(@oestruktur))
ORDER BY Gueltig_ab DESC
END
FETCH NEXT FROM xc INTO @mnr
END
CLOSE xc
DEALLOCATE xc
-- Geschlossene AU
DECLARE @anzahl INT
DECLARE @aufwand FLOAT
DECLARE @ma VARCHAR(255)
DECLARE xc CURSOR
FOR
SELECT TGNummer, COUNT(TicketId) AS Expr1
FROM dbo.TXP_AU_Geschlossen
WHERE Status_Changedate BETWEEN @von AND @bis
GROUP BY TGNummer
OPEN xc
FETCH NEXT FROM xc INTO @ma, @anzahl
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET AU_Geschlossen = @anzahl
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @ma, @anzahl
END
CLOSE xc
DEALLOCATE xc
---- Offene AU
DECLARE xc CURSOR
FOR
SELECT TGNummer, COUNT(TicketID) AS Expr1
FROM dbo.TXP_AU_Offen
WHERE status_changedate BETWEEN @von AND @bis
AND ticketid NOT IN ( SELECT ticketid
FROM dbo.TXP_AU_Geschlossen
WHERE Status_Changedate BETWEEN @von AND @bis )
GROUP BY TGNummer
OPEN xc
FETCH NEXT FROM xc INTO @ma, @anzahl
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET AU_offen = @anzahl
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @ma, @anzahl
END
CLOSE xc
DEALLOCATE xc
---- Geschlossene IN
DECLARE xc CURSOR
FOR
SELECT TGNummer, COUNT(TicketId) AS Expr1
FROM dbo.TXP_IN_Geschlossen
WHERE Status_Changedate BETWEEN @von AND @bis
GROUP BY TGNummer
OPEN xc
FETCH NEXT FROM xc INTO @ma, @anzahl
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET IN_Geschlossen = @anzahl
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @ma, @anzahl
END
CLOSE xc
DEALLOCATE xc
-- Offene IN Langläufer
DECLARE xc CURSOR
FOR
SELECT TGNummer, COUNT(TicketID) AS Expr1
FROM dbo.TXP_IN_Offene_Langlaeufer
GROUP BY TGNummer
OPEN xc
FETCH NEXT FROM xc INTO @ma, @anzahl
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET IN_Langlaeufer = @anzahl
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @ma, @anzahl
END
CLOSE xc
DEALLOCATE xc
-- Geschlossene IN Aufwand
DECLARE xc CURSOR
FOR
SELECT TGNummer, COUNT(Ticket_ID)
FROM dbo.TXP_IN_Geschlossen_IN_Aufwand
WHERE status_changedate BETWEEN @von AND @bis AND aufwand > @ansatz
GROUP BY TGNummer
OPEN xc
FETCH NEXT FROM xc INTO @ma, @aufwand
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET IN_gt_1pt = IN_GT_1PT + @aufwand
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @ma, @aufwand
END
CLOSE xc
DEALLOCATE xc
-- Geschlossene IN Aufwand
DECLARE xc CURSOR
FOR
SELECT TGNummer, SUM(Aufwand)
FROM dbo.TXP_IN_Geschlossen_Aufwand
WHERE status_changedate BETWEEN @von AND @bis
GROUP BY TGNummer
OPEN xc
FETCH NEXT FROM xc INTO @ma, @aufwand
WHILE @@FETCH_STATUS = 0
BEGIN
UPDATE @tmpa
SET IN_Aufwand = in_aufwand + @aufwand
WHERE tgnummer = @ma
AND start = @von
AND ende = @bis
FETCH NEXT FROM xc INTO @ma, @aufwand
END
CLOSE xc
DEALLOCATE xc
FETCH NEXT FROM xm INTO @von, @bis
END
CLOSE xm
DEALLOCATE xm
---- Offene IN
-- DECLARE xc CURSOR
-- FOR
-- SELECT TGNummer, COUNT(TicketID) AS Expr1
-- FROM dbo.TXP_IN_Offen
-- WHERE status_changedate BETWEEN @save_von AND @save_bis
-- AND ticketid NOT IN ( SELECT ticketid
-- FROM dbo.TXP_IN_Geschlossen
-- WHERE Status_Changedate BETWEEN @save_von AND @save_bis )
-- GROUP BY TGNummer
-- OPEN xc
-- FETCH NEXT FROM xc INTO @ma, @anzahl
-- WHILE @@FETCH_STATUS = 0
-- BEGIN
-- UPDATE @tmpa
-- SET IN_offen = @anzahl
-- WHERE tgnummer = @ma
-- AND start = @save_von
-- FETCH NEXT FROM xc INTO @ma, @anzahl
-- END
-- CLOSE xc
-- DEALLOCATE xc
UPDATE @tmpa SET in_aufwand = in_aufwand / @ansatz
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.AU_offen, a.AU_Geschlossen, a.IN_Offen, a.IN_Geschlossen, a.IN_Aufwand, a.IN_GT_1PT, a.in_Langlaeufer
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, SUM(au_offen) AS au_offen, SUM(AU_Geschlossen) AS au_geschlossen,
SUM(IN_Offen) AS in_offen, SUM(in_geschlossen) AS in_geschlossen, SUM(in_Aufwand) AS in_Aufwand, SUM(IN_GT_1PT) AS in_get_1pt,
SUM(IN_Langlaeufer) AS IN_Langlaeufer
INTO #tmpfhr1
FROM #tmpfhr
GROUP BY OE, OESort, Name, Vorname, Sortierung, TGNummer, Expr1
SELECT *
FROM #tmpfhr1
ORDER BY OESort, Sortierung, Name
DROP TABLE #tmpfhr
DROP TABLE #tmpfhr1
END
GO