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/d5/d5eb5b919ae14817c5f97aef776...

89 lines
8.4 KiB

USE [Vertragsverwaltung_20160404]
GO
/****** Object: StoredProcedure [dbo].[sp_rpt_Lizenzauswertung_r2] Script Date: 02.12.2016 09:08:53 ******/
DROP PROCEDURE [dbo].[sp_rpt_Lizenzauswertung_r2]
GO
/****** Object: StoredProcedure [dbo].[sp_rpt_Lizenzauswertung_r2] 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_Lizenzauswertung_r2]
@sqlwhere varchar(1024)
AS
BEGIN
declare @rnd int
declare @tmptabl1 varchar(255)
declare @xsql varchar(2048)
declare @datum varchar(10)
SELECT @rnd=CAST(RAND() * 100 AS INT)
-- =============================================
-- Temporäre Tabelle löschen
-- =============================================
set @tmptabl1 = str(@rnd)
while left(@tmptabl1,1)=' ' begin
set @tmptabl1=right(@tmptabl1,len(@tmptabl1)-1)
end
set @tmptabl1 = 'tmp_mfp_' + @tmptabl1
IF EXISTS (SELECT name FROM sysobjects WHERE name = @tmptabl1) begin
set @xsql = 'drop table dbo.' + @tmptabl1
execute (@xsql)
end
set @tmptabl1='dbo.'+@tmptabl1
-- =============================================
-- Query ausführen
-- =============================================
set @datum='1900-01-01'
set @xsql='SELECT CASE WHEN Applikation_1.Bezeichnung IS NULL THEN applikation.bezeichnung ELSE applikation_1.bezeichnung END AS Applikation,'
set @xsql=@xsql+' dbo.Applikation.Bezeichnung AS Modul, dbo.ApplikationVersion.Version, CASE WHEN dbo.applikationversion.eingesetzt = 1 THEN '+char(39) + 'Ja' + char(39)+ ' ELSE ' + char(39) + 'Nein' + char(39) + ' END AS Installiert, '
set @xsql=@xsql+' dbo.Lizenztyp.Bezeichnung AS Lizenztyp, dbo.Lizenzkauf.Anzahl AS Expr1, CASE WHEN applikation_1.bezeichnung IS NULL'
set @xsql=@xsql+' THEN CASE WHEN dbo.applikation.inaktivseit < '+ char(39) + @datum + char(39) +' THEN '+char(39) + 'Inaktiv' + char(39) +' ELSE '+char(39) + 'Aktiv' + char(39) +' END ELSE CASE WHEN applikation_1.inaktivseit < '+ char(39) + @datum + char(39) +' THEN '+char(39) + 'Inaktiv' + char(39) +' ELSE '+char(39) + 'Aktiv' + char(39) +''
set @xsql=@xsql+' END END AS Applikation_Aktiv, dbo.lizenzkauf.Kaufdatum'
set @xsql = @xsql + ' into ' + @tmptabl1
set @xsql=@xsql+' FROM dbo.VertragselementApplikation INNER JOIN'
set @xsql=@xsql+' dbo.Applikation ON dbo.VertragselementApplikation.Applikationnr = dbo.Applikation.ApplikationNr INNER JOIN'
set @xsql=@xsql+' dbo.Lizenzkauf ON dbo.VertragselementApplikation.VertragselementApplikationnr = dbo.Lizenzkauf.Vertragselementapplikationnr INNER JOIN'
set @xsql=@xsql+' dbo.Lizenztyp ON dbo.Lizenzkauf.Lizenztypnr = dbo.Lizenztyp.Lizenztypnr LEFT OUTER JOIN'
set @xsql=@xsql+' dbo.Applikation AS Applikation_1 ON dbo.Applikation.ParentID = Applikation_1.ApplikationNr LEFT OUTER JOIN'
set @xsql=@xsql+' dbo.ApplikationVersion ON dbo.Applikation.ApplikationNr = dbo.ApplikationVersion.ApplikationNr AND'
set @xsql=@xsql+' dbo.VertragselementApplikation.ApplikationVersionNr = dbo.ApplikationVersion.ApplikationVersionNr'
set @xsql=@xsql+' WHERE (dbo.Lizenzkauf.Aktiv = 1)'
execute (@xsql)
set @xsql = ' SELECT Applikation, Modul, Version, Installiert, Lizenztyp, SUM(Expr1) AS Anzahl, Applikation_Aktiv, Kaufdatum '
set @xsql = @xsql + ' FROM ' + @tmptabl1
if @sqlwhere <> '' begin
set @xsql = @xsql + ' where ' + @sqlwhere
end
set @xsql = @xsql +' GROUP BY Applikation, Modul, Version, Installiert, Lizenztyp, Applikation_Aktiv, Kaufdatum '
execute (@xsql)
-- =============================================
-- Temporäre Tabelle löschen
-- =============================================
set @tmptabl1 = str(@rnd)
while left(@tmptabl1,1)=' ' begin
set @tmptabl1=right(@tmptabl1,len(@tmptabl1)-1)
end
set @tmptabl1 = 'tmp_mfp_' + @tmptabl1
IF EXISTS (SELECT name FROM sysobjects WHERE name = @tmptabl1) begin
set @xsql = 'drop table dbo.' + @tmptabl1
execute (@xsql)
end
end
GO