USE [Vertragsverwaltung_20160404] GO /****** Object: StoredProcedure [dbo].[sp_mittelfristplanung_differenzen] Script Date: 02.12.2016 09:08:53 ******/ DROP PROCEDURE [dbo].[sp_mittelfristplanung_differenzen] GO /****** Object: StoredProcedure [dbo].[sp_mittelfristplanung_differenzen] 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_mittelfristplanung_differenzen] @datumvon datetime, @datumbis datetime as BEGIN DECLARE @Mutationen TABLE ( Typ varchar(10), Vertragsereignis varchar(255), Vertragselement varchar(255), Vertragspartner varchar(255), Element varchar(255), Alter_Wert varchar(255), Neuer_Wert varchar(255), Datum varchar(255) ) declare @ve varchar(255) declare @velement varchar(255) declare @vp varchar(255) declare @vnr int declare @vpnr int declare @datum datetime -- Neue Vertragsereignisse declare xc cursor for select bezeichnung, vertragselementnr, erstellt_am from dbo.Vertragsereignis where EreignistypNr=3 and Erstellt_am >= @datumvon and Erstellt_am <= @datumbis open xc fetch next from xc into @ve, @vnr, @datum while @@FETCH_STATUS=0 begin select @velement=bezeichnung, @vpnr=vertragspartnernr from Vertragselement where vertragselementnr=@vnr select @vp=namez1 from Vertragspartner where VertragspartnerNr=@vpnr insert @Mutationen(Typ,Vertragsereignis, Vertragselement, Vertragspartner, Element, neuer_wert, alter_wert, datum) values ('E',@ve,@velement,@vp,'Neu erstellt','','',@datum) fetch next from xc into @ve, @vnr, @datum end close xc deallocate xc -- Neue Vertragselemente insert @Mutationen(Typ,Vertragsereignis, Vertragselement, Vertragspartner, Element, neuer_wert, alter_wert, datum) SELECT distinct 'V' AS Typ, '' AS Vertragsereignis, dbo.Vertragselement.Bezeichnung AS Vertragselement, dbo.Vertragspartner.NameZ1 AS Vertragspartner, 'Neu erstellt' AS element, '' AS alter_wert, '' AS neuer_wert, dbo.Vertragselement.Erstellt_am FROM dbo.Vertragselement INNER JOIN dbo.Vertragsereignis ON dbo.Vertragselement.Vertragselementnr = dbo.Vertragsereignis.Vertragselementnr INNER JOIN dbo.Vertragspartner ON dbo.Vertragselement.VertragspartnerNr = dbo.Vertragspartner.VertragspartnerNr WHERE (dbo.Vertragsereignis.EreignistypNr = 3) and dbo.vertragselement.Erstellt_am >= @datumvon and dbo.vertragselement.Erstellt_am <= @datumbis -- Mutationen auf Vertragsereignis insert @Mutationen SELECT 'E' as Typ, dbo.Vertragsereignis.Bezeichnung AS Vertragsereignis, dbo.Vertragselement.Bezeichnung AS Vertragselement, dbo.Vertragspartner.NameZ1 AS Partner, dbo.History.HistoryObjectdetails, dbo.History.Alter_Wert, --dbo.History.Neuer_Wert case when dbo.History.Neuer_Wert='Inaktiv' then 'Inaktiv (V-Ereignis)' else dbo.History.Neuer_Wert end as Neuer_Wert, convert(datetime,dbo.History.Erstellt_am) FROM dbo.Vertragselement INNER JOIN dbo.Vertragsereignis ON dbo.Vertragselement.Vertragselementnr = dbo.Vertragsereignis.Vertragselementnr INNER JOIN dbo.Vertragspartner ON dbo.Vertragselement.VertragspartnerNr = dbo.Vertragspartner.VertragspartnerNr INNER JOIN dbo.History ON dbo.Vertragsereignis.EreignisNr = dbo.History.HistoryObjekctKey where dbo.History.Erstellt_am >= @datumvon and dbo.History.Erstellt_am <= @datumbis and dbo.Vertragsereignis.EreignistypNr=3 and dbo.History.HistoryTypNr=2 -- Mutationen auf Vertragselement insert @Mutationen SELECT 'V' as Typ,'' AS Vertragsereignis, dbo.Vertragselement.Bezeichnung AS Vertragselement, dbo.Vertragspartner.NameZ1 AS Partner, dbo.History.HistoryObjectDetails, dbo.History.Alter_Wert, --dbo.history.Neuer_Wert case when dbo.History.Neuer_Wert='Inaktiv' then 'Inaktiv (V-Element)' else dbo.History.Neuer_Wert end as Neuer_Wert, CONVERT(datetime, dbo.History.Erstellt_am) AS Expr1 FROM dbo.Vertragselement INNER JOIN dbo.Vertragsereignis ON dbo.Vertragselement.Vertragselementnr = dbo.Vertragsereignis.Vertragselementnr INNER JOIN dbo.Vertragspartner ON dbo.Vertragselement.VertragspartnerNr = dbo.Vertragspartner.VertragspartnerNr INNER JOIN dbo.History ON dbo.Vertragselement.Vertragselementnr = dbo.History.HistoryObjekctKey WHERE dbo.History.Erstellt_am >= @datumvon and dbo.History.Erstellt_am <= @datumbis and dbo.Vertragsereignis.EreignistypNr=3 and dbo.History.HistoryTypNr=1 select distinct * from @Mutationen order by Vertragsereignis, Datum END GO