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: -- Create date: -- 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