PDC_REPORT_CreazioneDB/sql/storedCollaudo/C6MartPeriodico_SRV_STORICIZZAZIONE.sql
2025-06-06 19:02:52 +02:00

68 lines
3.9 KiB
Transact-SQL

-- Schema: C6MartPeriodico
-- Stored Procedure: SRV_STORICIZZAZIONE
-- =============================================
-- Author: Paolo Giovanetti
-- Create date: 21 gennaio 2009
-- Description: Effettua una storicizzazione del DataMart prima dell'import di nuovi dati.
-- =============================================
-- [C6MartPeriodico].[SRV_STORICIZZAZIONE] 'GESTIONE_EMAIL'
CREATE PROCEDURE [C6MartPeriodico].[SRV_STORICIZZAZIONE]
@NomeTabella AS VARCHAR(50) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @ID_ELAB INT -- Elaborazione da storicizzare
DECLARE @MIN_ID_ELAB AS INT -- Elaborazione vecchia da eliminare dallo storico
DECLARE @TempoStoricoC6 AS INT -- Numero di giorni di vita dello storico
SET @TempoStoricoC6 = dbo.getparametro('TempoStoricoC6')
SELECT @MIN_ID_ELAB = ISNULL(MAX(ID_ELAB),0)
FROM C6MARTPERIODICO.ELABORAZIONI
WHERE DATEDIFF(DAY,DATA_OPERAZIONE,GETDATE()) > @TempoStoricoC6
SET @ID_ELAB = C6MARTPERIODICO.GETIDELAB()
-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX TABELLA SPECIALE XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
--XXXXXXXXXXXXXXXXXXXXXXXX CONTRATTOSEI XXXXXXXXXXXXXXXXXXXXXXXX--
IF(@NomeTabella IS NULL OR @NomeTabella = 'CONTRATTOSEI')
BEGIN
DELETE FROM C6StoricoPeriodico.CONTRATTOSEI WHERE ID_ELAB >= @ID_ELAB OR ID_ELAB < @MIN_ID_ELAB
INSERT INTO C6StoricoPeriodico.CONTRATTOSEI
(Rete, Cod_Fiscale, Data_Sott, CodiceContratto, Cod_Agente, Data_Perf_Base, Data_Perf, Fascia_CPP, Email, Indirizzo, CAP, Citta, Prov, Nazione, Presso, Data_Inizio, Freq_Diagnosi, Freq_Monitor, Freq_DiagnosiPrec, Freq_MonitorPrec, Data_InizioConsInv, Data_InizioBase, Data_FineBase, Data_InizioAvanzato, Data_FineAvanzato, ProgressivoInvio, GenerazioneReport, InvioBenvenuto, DataUltimoInvio, ClienteMigrato, RisorseNA, PartViaDisinv, NumSolleciti, Data_UltimoSollecito, NumRevoche, Data_UltimaRevoca, Note, Data_Invio_Diagnosi_Trimestrale, Data_Invio_Monitoraggio_Trimestrale, ID_ELAB)
SELECT
C.Rete, C.Cod_Fiscale, C.Data_Sott, C.CodiceContratto, C.Cod_Agente, C.Data_Perf_Base, C.Data_Perf, C.Fascia_CPP, C.Email, C.Indirizzo, C.CAP, C.Citta, C.Prov, C.Nazione, C.Presso, C.Data_Inizio, C.Freq_Diagnosi, C.Freq_Monitor, C.Freq_DiagnosiPrec, C.Freq_MonitorPrec, C.Data_InizioConsInv, C.Data_InizioBase, C.Data_FineBase, C.Data_InizioAvanzato, C.Data_FineAvanzato, C.ProgressivoInvio, C.GenerazioneReport, C.InvioBenvenuto, C.DataUltimoInvio, C.ClienteMigrato, C.RisorseNA, C.PartViaDisinv, C.NumSolleciti, C.Data_UltimoSollecito, C.NumRevoche, C.Data_UltimaRevoca, C.Note, C.Data_Invio_Diagnosi_Trimestrale, C.Data_Invio_Monitoraggio_Trimestrale, @ID_ELAB
FROM C6Mart.CONTRATTOSEI C--WHERE ID_ELAB = @ID_ELAB
LEFT OUTER JOIN C6StoricoPeriodico.CONTRATTOSEI SC
ON C.Rete = SC.Rete
AND C.Cod_Fiscale = SC.Cod_Fiscale
AND C.CodiceContratto = SC.CodiceContratto
WHERE SC.Rete IS NULL
END
-- XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX FINE TABELLA SPECIALE XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
--XXXXXXXXXXXXXXXXXXXXXXXX ANAG_CC XXXXXXXXXXXXXXXXXXXXXXXX--
IF(@NomeTabella IS NULL OR @NomeTabella = 'ANAG_CC')
BEGIN
DELETE FROM C6StoricoPeriodico.ANAG_CC WHERE ID_ELAB >= @ID_ELAB OR ID_ELAB < @MIN_ID_ELAB
INSERT INTO C6StoricoPeriodico.ANAG_CC
(RETE, COD_FISCALE, INTERMEDIARIO, COINTEST, COD_CC, FASCIA_CPP, SALDO, DATA_APERTURA, DATA_CHIUSURA, ID_ELAB, TIPO_ELAB)
SELECT
AC.RETE, AC.COD_FISCALE, AC.INTERMEDIARIO, AC.COINTEST, AC.COD_CC, AC.FASCIA_CPP, AC.SALDO, AC.DATA_APERTURA, AC.DATA_CHIUSURA, AC.ID_ELAB, AC.TIPO_ELAB
FROM C6MartPeriodico.ANAG_CC AC
LEFT OUTER JOIN C6StoricoPeriodico.ANAG_CC SAC
ON AC.RETE = SAC.RETE
AND AC.COD_FISCALE = SAC.COD_FISCALE
AND AC.COD_CC = SAC.COD_CC
WHERE AC.ID_ELAB = @ID_ELAB AND SAC.RETE IS NULL
END
--XXXXXXXXXXXXXXXXXXXXXXXX ANAG_CC_TERZI XXXXXXXXXXXXXXXXXXXXXXXX--
IF(@NomeTabell