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/12/124a0d0682c85f6776c3bed1289...

103 lines
9.1 KiB

USE [Vertragsverwaltung_20160404]
GO
/****** Object: StoredProcedure [dbo].[sp_rpt_Lizenzauswertung_neu_detail] Script Date: 02.12.2016 09:08:53 ******/
DROP PROCEDURE [dbo].[sp_rpt_Lizenzauswertung_neu_detail]
GO
/****** Object: StoredProcedure [dbo].[sp_rpt_Lizenzauswertung_neu_detail] 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_neu_detail]
@sqlwhere varchar(255)
AS
BEGIN
declare @rnd int
declare @tmptabl1 varchar(255)
declare @xsql varchar(4096)
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-02-01'
set @xsql='SELECT dbo.Applikation.Bezeichnung AS Applikation, dbo.Lizenz.Bezeichnung AS Lizenz'
set @xsql=@xsql + ', dbo.Lizenzkauf.Anzahl, isnull(dbo.ApplikationVersion.Version,'+char(39)+char(39)+') as Version '
set @xsql=@xsql + ', dbo.Lizenztyp.Bezeichnung as Lizenztyp'
set @xsql=@xsql + ', CASE WHEN dbo.applikation.inaktivseit > '+ char(39) + @datum + char(39) +' THEN '+char(39) + 'Inaktiv' + char(39) +' ELSE '+char(39) + 'Aktiv' + char(39) + ' end as Applikation_Aktiv'
set @xsql=@xsql + ', case when dbo.lizenzkauf.aktiv=1 then ' + char(39)+'Aktiv' + char(39) +' else ' + char(39)+'Inaktiv'+char(39)+' end as lizenz_aktiv '
set @xsql=@xsql + ', dbo.Lizenzkauf.Kaufdatum, dbo.Lizenzkauf.KGNummer AS Auftragsnummer '
set @xsql=@xsql + ', dbo.Lizenzkauf.SAPNummer, dbo.Lizenzkauf.Gueltigbis, dbo.Lizenzkauf.Bemerkung'
set @xsql=@xsql + ' into ' + @tmptabl1
set @xsql=@xsql + ' FROM dbo.Lizenz INNER JOIN '
set @xsql=@xsql + ' dbo.LizenzVertragselementApplikation ON dbo.Lizenz.LizenzNr = dbo.LizenzVertragselementApplikation.Lizenznr INNER JOIN'
set @xsql=@xsql + ' dbo.VertragselementApplikation ON '
set @xsql=@xsql + ' dbo.LizenzVertragselementApplikation.VertragselementApplikationNr = dbo.VertragselementApplikation.VertragselementApplikationnr INNER JOIN'
set @xsql=@xsql + ' dbo.Applikation ON dbo.VertragselementApplikation.Applikationnr = dbo.Applikation.ApplikationNr INNER JOIN'
set @xsql=@xsql + ' dbo.Lizenzkauf ON dbo.Lizenz.LizenzNr = dbo.Lizenzkauf.Lizenznr AND '
set @xsql=@xsql + ' dbo.LizenzVertragselementApplikation.LizenzVEApplNr = dbo.Lizenzkauf.Vertragselementapplikationnr INNER JOIN'
set @xsql=@xsql + ' dbo.Lizenztyp ON dbo.Lizenzkauf.Lizenztypnr = dbo.Lizenztyp.Lizenztypnr LEFT OUTER JOIN'
set @xsql=@xsql + ' dbo.ApplikationVersion ON dbo.VertragselementApplikation.ApplikationVersionNr = dbo.ApplikationVersion.ApplikationVersionNr'
set @xsql=@xsql + ' where dbo.lizenz.aktiv=1'
print @xsql
execute (@xsql)
-- =============================================
-- Filterung und selektion
-- =============================================
set @xsql='select * '
-- distinct applikation, lizenz, isnull(sum(anzahl),0) as anzahl,lizenztyp, Applikation_aktiv, Lizenz_Aktiv'
--set @xsql=@xsql + ' into vertragsverwaltung.dbo.__Lizenzauswertung_detail '
set @xsql=@xsql+' from ' + @tmptabl1
if @sqlwhere<>'' begin
set @xsql=@xsql+' where ' + @sqlwhere
end
--set @xsql=@xsql+' GROUP BY Applikation, Lizenz,Lizenztyp, Applikation_Aktiv, Lizenz_Aktiv'
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