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/1b/1bfd0292bead945889a7e59b4f5...

85 lines
5.7 KiB

USE [Vertragsverwaltung_20160404]
GO
/****** Object: UserDefinedFunction [dbo].[lc_rpt6] Script Date: 02.12.2016 09:08:53 ******/
DROP FUNCTION [dbo].[lc_rpt6]
GO
/****** Object: UserDefinedFunction [dbo].[lc_rpt6] 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 FUNCTION [dbo].[lc_rpt6]
(
@produkte VARCHAR(255),
@inTagen VARCHAR(255)
)
RETURNS @tmp1 TABLE (LC_Produktnr INT, Produkt VARCHAR(255), LC_PhaseNr INT, datum DATETIME)
AS
begin
DECLARE @von DATETIME
DECLARE @it integer
DECLARE @bis datetime
SET @it=@intagen
IF @intagen <> 0 BEGIN
SET @von=DATEADD(DAY,@it,GETDATE())
SET @von=DATEADD(dd, DATEDIFF(dd, 0, @von), 0)
END
DECLARE @tmp2 TABLE (lc_Produktnr INT, Produkt VARCHAR(255), lc_phasenr INT, Phase VARCHAR(255), datum DATETIME, skey INT IDENTITY)
DECLARE @tmp3 TABLE (lc_Produktnr INT, Produkt VARCHAR(255), lc_phasenr int, phase VARCHAR(255), datumvon DATETIME, datumbis DATETIME, diff INT, skey INT )
INSERT @tmp2
SELECT TOP (100) PERCENT dbo.LC_Produkt_Phase.LC_ProduktNr, dbo.lc_produkt.bezeichnung AS Produkt, dbo.LC_Produkt_Phase.LC_PhaseNr, dbo.LC_Phase.Bezeichnung AS Phase, dbo.LC_Produkt_Phase.Datum
FROM dbo.LC_Produkt_Phase INNER JOIN
dbo.LC_Produkt ON dbo.LC_Produkt_Phase.LC_ProduktNr = dbo.LC_Produkt.LC_ProduktNr INNER JOIN
dbo.LC_Phase ON dbo.LC_Produkt_Phase.LC_PhaseNr = dbo.LC_Phase.LC_PhaseNr
WHERE (dbo.LC_Produkt_Phase.Aktiv = 1) AND (dbo.LC_Produkt.Aktiv = 1) AND (dbo.LC_Produkt.StatusNr = 1)
ORDER BY dbo.LC_Produkt_Phase.LC_ProduktNr, dbo.LC_Produkt_Phase.Datum DESC
INSERT @tmp3
SELECT t1.lc_ProduktNr, t1.produkt, t1.lc_phasenr, t1.Phase , t1.datum AS DatumVon, x.datum AS DatumBis, ISNULL(DATEDIFF(DAY,t1.datum,x.datum),0) AS Diff, t1.skey
FROM @tmp2 t1
OUTER APPLY (
SELECT TOP 1 datum FROM @tmp2 t2 WHERE t2.skey < t1.skey ORDER BY t2.skey desc) x
ORDER BY lc_ProduktNr, t1.datum asc
UPDATE @tmp3 SET diff=0 WHERE diff < 0
DELETE FROM @tmp3 WHERE diff=0
IF @produkte='' BEGIN
insert into @tmp1
SELECT DISTINCT LC_Produktnr, Produkt, lc_phasenr, datumvon
FROM @tmp3
WHERE @von BETWEEN datumvon AND datumbis
ORDER BY Produkt
end
IF @produkte<>'' BEGIN
insert into @tmp1
SELECT DISTINCT LC_Produktnr, Produkt, lc_phasenr, datumvon
FROM @tmp3
WHERE @von BETWEEN datumvon AND datumbis
AND lc_produktnr IN (SELECT item FROM dbo.fnkt_split(@produkte,',',1))
ORDER BY Produkt
end
RETURN
end
GO