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.

199 lines
13 KiB

USE [Vertragsverwaltung_20160404]
GO
/****** Object: StoredProcedure [dbo].[sp_lc_reporting] Script Date: 02.12.2016 09:08:53 ******/
DROP PROCEDURE [dbo].[sp_lc_reporting]
GO
/****** Object: StoredProcedure [dbo].[sp_lc_reporting] 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_lc_reporting]
@fnkt INT,
@param1 VARCHAR(4096),
@param2 VARCHAR(4096),
@param3 VARCHAR(4096),
@param4 VARCHAR(4096),
@param5 VARCHAR(4096),
@param6 VARCHAR(4096)
AS
BEGIN
-- Abgelaufene Überprüfungen
IF @fnkt=1 BEGIN
SELECT lc_produktnr AS ProduktNr, bezeichnung AS Produkt, Nächste_Ueberprüfung AS N_Ueberpruefung FROM lc_produkt WHERE Nächste_Ueberprüfung < GETDATE() AND aktiv=1 AND Nächste_Ueberprüfung<>'01.01.1900'
END
-- Abgelaufenen Produkte in N Tagen
IF @fnkt=2 BEGIN
SELECT lc_produktnr AS ProduktNr, bezeichnung AS Produkt, Nächste_Ueberprüfung AS N_Ueberpruefung, DATEDIFF(DAY, GETDATE(),Nächste_Ueberprüfung) AS in_Tagen
FROM lc_produkt
WHERE DATEDIFF(DAY,GETDATE(),Nächste_Ueberprüfung) <= @param1 AND aktiv=1 AND Nächste_Ueberprüfung<>'01.01.1900'
END
-- Abgelaufene Entscheidungen
IF @fnkt=3 BEGIN
SELECT lc_produktnr AS ProduktNr, bezeichnung AS Produkt, Entscheidungstermin AS Termin
FROM lc_produkt WHERE Entscheidungstermin < GETDATE() AND aktiv=1 AND Entscheidungstermin<>'01.01.1900'
END
--
IF @fnkt=4 BEGIN
SELECT lc_produktnr AS ProduktNr, bezeichnung AS Produkt, Entscheidungstermin AS Termin, DATEDIFF(DAY, GETDATE(),Entscheidungstermin) AS in_Tagen
FROM lc_produkt
WHERE DATEDIFF(DAY,GETDATE(),Entscheidungstermin) <= @param1 AND aktiv=1 AND Entscheidungstermin<>'01.01.1900'
END
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
print @param1
print @param2
print @param3
print @param4
-- Roadmap nach Phasen
IF @fnkt=5 OR @fnkt=7 BEGIN
if @fnkt=5 begin
IF @param2='' SET @param2='01.01.1900'
IF @param3='' SET @param3='31.12.4712'
end
IF @fnkt=7 BEGIN
--SET @param3='31.12.4712'
set @param3=left(convert(varchar,dateadd(day,cast(@param2 as int),getdate()),104),10)
set @param2 =left(convert(varchar,getdate(),104),10)
END
print @param2
print @param3
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Phase) from dbo.lc_rpt3(@param1,@param2,@param3,@param4)
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT lc_produktnr as ProduktNr, Produkt,' + @cols + ' from
(
select p.lc_produktnr,p.Produkt,
p.datum,
d.phase
from dbo.lc_rpt4('+CHAR(39)+@param1+CHAR(39)+','+CHAR(39)+@param2+CHAR(39)+','+CHAR(39)+@param3+CHAR(39)+','+@param4+') p
left join dbo.lc_rpt3('+CHAR(39)+@param1+CHAR(39)+','+CHAR(39)+@param2+CHAR(39)+','+CHAR(39)+@param3+CHAR(39)+','+@param4+') d
on p.lc_phasenr = d.lc_phasenr
) x
pivot
(
max(datum)
for Phase in (' + @cols + ')
) p '
execute(@query)
end
-- Roadmap nach Produkten
IF @fnkt=6 BEGIN
IF @param2='' SET @param2='01.01.1900'
IF @param3='' SET @param3='31.12.4712'
--set @param2=right(@param2,4)+'-'+substring(@param2,4,2)+'-'+left(@param2,2)
--set @param3=right(@param3,4)+'-'+substring(@param3,4,2)+'-'+left(@param3,2)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Phase) from dbo.lc_rpt1(@param1,@param2,@param3, @param4)
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
PRINT @cols
set @query = 'SELECT lc_produktnr as ProduktNr, Produkt,' + @cols + ' from
(
select p.lc_produktnr,p.Produkt,
p.datum,
d.phase
from dbo.lc_rpt2('+CHAR(39)+@param1+CHAR(39)+','+CHAR(39)+@param2+CHAR(39)+','+CHAR(39)+@param3+CHAR(39)+','+@param4+') p
left join dbo.lc_rpt1('+CHAR(39)+@param1+CHAR(39)+','+CHAR(39)+@param2+CHAR(39)+','+CHAR(39)+@param3+CHAR(39)+','+@param4+') d
on p.lc_phasenr = d.lc_phasenr
) x
pivot
(
max(datum)
for Phase in (' + @cols + ')
) p '
execute(@query)
end
-- IF @fnkt=7 BEGIN
-- select @cols = STUFF((SELECT distinct ',' + QUOTENAME(Phase) from dbo.lc_rpt5(@param1,@param2)
-- FOR XML PATH(''), TYPE
-- ).value('.', 'NVARCHAR(MAX)')
-- ,1,1,'')
--PRINT @cols
--set @query = 'SELECT lc_produktnr as ProduktNr, Produkt,' + @cols + ' from
-- (
-- select p.lc_produktnr,p.Produkt,
-- p.datum,
-- d.phase
-- from dbo.lc_rpt6('+CHAR(39)+@param1+CHAR(39)+','+CHAR(39)+@param2+CHAR(39)+') p
-- left join dbo.lc_rpt5('+CHAR(39)+@param1+CHAR(39)+','+CHAR(39)+@param2+CHAR(39)+') d
-- on p.lc_phasenr = d.lc_phasenr
-- ) x
-- pivot
-- (
-- max(datum)
-- for Phase in (' + @cols + ')
-- ) p '
-- execute(@query)
-- end
--IF OBJECT_ID (N'_tmp_lc_rpt1', N'U') IS NOT NULL DROP TABLE [dbo].[_tmp_lc_rpt1]
--IF OBJECT_ID (N'_tmp_lc_rpt2', N'U') IS NOT NULL DROP TABLE [dbo].[_tmp_lc_rpt2]
--SELECT * INTO _tmp_lc_rpt1 FROM dbo.lc_rpt1(@param1,@param2,@param3)
--SELECT * INTO _tmp_lc_rpt2 FROM dbo.lc_rpt2(@param1,@param2,@param3)
--set @query = 'SELECT lc_produktnr as ProduktNr, Produkt,' + @cols + ' from
-- (
-- select p.lc_produktnr,p.Produkt,
-- p.datum,
-- d.phase
-- from _tmp_lc_rpt2 p
-- left join _tmp_lc_rpt1 d
-- on p.lc_phasenr = d.lc_phasenr
-- ) x
-- pivot
-- (
-- max(datum)
-- for Phase in (' + @cols + ')
-- ) p '
END
GO