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.
387 lines
30 KiB
387 lines
30 KiB
USE [Vertragsverwaltung_20160404]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[sp_rpt_fhrlst_Anzahl_neu] Script Date: 02.12.2016 09:08:53 ******/
|
|
DROP PROCEDURE [dbo].[sp_rpt_fhrlst_Anzahl_neu]
|
|
GO
|
|
/****** Object: StoredProcedure [dbo].[sp_rpt_fhrlst_Anzahl_neu] 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_neu]
|
|
@von DATETIME = NULL ,
|
|
@bis DATETIME = NULL,
|
|
@OEStruktur INT = NULL,
|
|
@struktur_Ausschluss VARCHAR(255) = NULL,
|
|
@Mitarbeiter_Ausschluss varchar(255)=null
|
|
AS
|
|
BEGIN
|
|
|
|
|
|
IF @von IS NULL SET @von = convert(datetime,'01.01.2014',104) else set @von=CONVERT(datetime,@von,104)
|
|
IF @bis IS NULL SET @bis = convert(datetime,'31.05.2014',104) else set @bis=CONVERT(datetime,@bis,104)
|
|
IF @oestruktur IS NULL
|
|
SET @oestruktur=24
|
|
IF @struktur_ausschluss IS NULL
|
|
SET @struktur_ausschluss = ''
|
|
if @mitarbeiter_ausschluss is null set @Mitarbeiter_Ausschluss=''
|
|
DECLARE @save_von DATETIME
|
|
DECLARE @save_bis datetime
|
|
|
|
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 @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.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
|
|
|
|
--print @bis
|
|
--print @von
|
|
--SELECT manr
|
|
-- FROM ma
|
|
-- WHERE aktiv = 1
|
|
-- AND gueltig_bis >= @bis
|
|
--return
|
|
|
|
DECLARE xm CURSOR
|
|
FOR
|
|
SELECT @von AS von, @bis AS bis
|
|
--select start_date, end_date
|
|
-- FROM dbo.get_monatstabelle(@von, @bis)
|
|
-- ORDER BY start_date
|
|
OPEN xm
|
|
FETCH NEXT FROM xm INTO @von, @bis
|
|
|
|
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
--print @von
|
|
--print @bis
|
|
print 'Loop 1'
|
|
print convert(varchar(24), getdate(),121)
|
|
DECLARE xc CURSOR
|
|
FOR
|
|
SELECT manr
|
|
FROM ma
|
|
WHERE (aktiv = 1
|
|
AND gueltig_bis >= @bis or manr in (select manr from madetails where aktiv=1 and gueltig_ab >=@von)) and
|
|
manr not in (select item from dbo.fnkt_split(@mitarbeiter_ausschluss,',',1))
|
|
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 or Gueltig_ab <=@bis)
|
|
if @mnr = 71 print @rc
|
|
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 or Gueltig_ab <=@bis)
|
|
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
|
|
print 'Loop 2'
|
|
print convert(varchar(24), getdate(),121)
|
|
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
|
|
print 'Loop 3'
|
|
print convert(varchar(24), getdate(),121)
|
|
DECLARE xc CURSOR
|
|
FOR
|
|
SELECT TGNummer, COUNT(TicketID) AS Expr1
|
|
FROM dbo.TXP_AU_Offen
|
|
WHERE status_changedate < @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
|
|
print 'Loop 4'
|
|
print convert(varchar(24), getdate(),121)
|
|
DECLARE xc CURSOR
|
|
FOR
|
|
SELECT TGNummer, COUNT(TicketId) AS Expr1
|
|
FROM dbo.TXP_IN_Geschlossen
|
|
WHERE convert(datetime,Status_Changedate,20) 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
|
|
print 'Loop 5'
|
|
print convert(varchar(24), getdate(),121)
|
|
|
|
-- Offene IN
|
|
DECLARE xc CURSOR
|
|
FOR
|
|
SELECT TGNummer, COUNT(TicketID) AS Expr1
|
|
FROM dbo.TXP_IN_Offen
|
|
WHERE status_changedate < @save_bis and status_changedate > @save_von -- 2014-06-01
|
|
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
|
|
|
|
|
|
|
|
--Offene IN Langläufer
|
|
print 'Loop 6'
|
|
print convert(varchar(24), getdate(),121)
|
|
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
|
|
print 'Loop 7'
|
|
print convert(varchar(24), getdate(),121)
|
|
DECLARE xc CURSOR
|
|
FOR
|
|
SELECT TGNummer, COUNT(Ticket_ID)
|
|
FROM dbo.TXP_IN_Geschlossen_IN_Aufwand
|
|
WHERE status_changedate < @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
|
|
print 'Loop 8'
|
|
print @von
|
|
print @bis
|
|
print convert(varchar(24), getdate(),121)
|
|
DECLARE xc CURSOR
|
|
FOR
|
|
SELECT TGNummer, SUM(Aufwand)
|
|
FROM dbo.TXP_IN_Geschlossen_Aufwand
|
|
WHERE status_changedate < @bis and status_changedate > @von -- Von-Datum berücksichtigen 2014-05-06
|
|
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
|
|
|
|
|
|
print 'Loop 9'
|
|
print convert(varchar(24), getdate(),121)
|
|
|
|
UPDATE @tmpa SET in_aufwand = in_aufwand
|
|
--/ @ansatz
|
|
-- 2014-06-01 - Distinct einbauen
|
|
SELECT DISTINCT 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
|
|
|
|
print 'Loop 10'
|
|
print convert(varchar(24), getdate(),121)
|
|
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
|
|
|
|
print 'Loop 11'
|
|
print convert(varchar(24), getdate(),121)
|
|
SELECT *
|
|
FROM #tmpfhr1
|
|
ORDER BY OESort, Sortierung, Name
|
|
|
|
DROP TABLE #tmpfhr
|
|
DROP TABLE #tmpfhr1
|
|
|
|
|
|
END
|
|
|
|
|
|
|
|
|
|
GO
|