98 lines
3.7 KiB
Transact-SQL
98 lines
3.7 KiB
Transact-SQL
CREATE PROCEDURE [C6MartPeriodico].[RP_ST_ClientiPtfNonDiv]
|
|
AS
|
|
BEGIN
|
|
-- Drop the #temp table if it exists
|
|
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
|
|
DROP TABLE #temp;
|
|
-- Log esecuzione
|
|
INSERT INTO LOG_ESECUZIONE_PERIODICO
|
|
(Nome, Inizio, Nota)
|
|
VALUES (
|
|
'RP_ST_ClientiPtfNonDiv',
|
|
GETDATE(),
|
|
'Elaborazione Trimestrale'
|
|
);
|
|
-- DECLARE @appo_contratti_l INT;
|
|
-- SELECT @appo_contratti_l = ISNULL(COUNT(*), 0) FROM [C6StagingPeriodico].[APPO_CONTRATTI_LIMITER];
|
|
DECLARE @DataFineTrim VARCHAR(8);
|
|
SET @DataFineTrim = c6martperiodico.getTrimestre2(GETDATE(), 0);
|
|
DECLARE @DataClientiPtf VARCHAR(8);
|
|
select @DataClientiPtf = MAX(DTTrim) from [C6MartPeriodico].[RP_ClientiPtfNonDiv]
|
|
if(@DataFineTrim<>@DataClientiPtf)
|
|
begin
|
|
truncate table [C6MartPeriodico].[RP_ClientiPtfNonDiv]
|
|
end
|
|
-- IF (@appo_contratti_l = 0)
|
|
-- BEGIN
|
|
SELECT Rete, COD_FISCALE AS Cod_Fiscale, 0.0000 AS Somma_credito
|
|
INTO #temp
|
|
FROM C6StagingPeriodico.APPO_CONTRATTI
|
|
EXCEPT
|
|
SELECT rete, cod_fiscale, 0.0000 FROM C6MartPeriodico.PATRIMONIO_BF
|
|
UNION
|
|
SELECT rete, cod_fiscale, SUM(credito) AS Somma_credito
|
|
FROM C6MartPeriodico.PATRIMONIO_BF bf
|
|
INNER JOIN [C6StagingPeriodico].[RP_CatDivPtf] c ON bf.COD_PRODOTTO = c.CatalogueID
|
|
GROUP BY rete, cod_fiscale
|
|
HAVING SUM(credito) < 3.00;
|
|
-- END
|
|
--ELSE
|
|
--BEGIN
|
|
-- SELECT rete, COD_FISCALE AS Cod_Fiscale, 0.0000 AS Somma_credito
|
|
---- INTO #temp
|
|
-- FROM C6StagingPeriodico.APPO_CONTRATTI_LIMITER
|
|
-- EXCEPT
|
|
-- SELECT rete, cod_fiscale, 0.0000 FROM C6MartPeriodico.PATRIMONIO_BF
|
|
-- UNION
|
|
-- SELECT rete, cod_fiscale, SUM(credito) AS Somma_credito
|
|
-- FROM C6MartPeriodico.PATRIMONIO_BF bf
|
|
-- INNER JOIN [C6StagingPeriodico].[RP_CatDivPtf] c ON bf.COD_PRODOTTO = c.CatalogueID
|
|
-- GROUP BY rete, cod_fiscale
|
|
-- HAVING SUM(credito) < 3.00;
|
|
--END;
|
|
--select * from [C6MartPeriodico].[RP_ClientiPtfNonDiv]
|
|
INSERT INTO [C6MartPeriodico].[RP_ClientiPtfNonDiv]
|
|
([Rete]
|
|
,[Chiave_Acn]
|
|
,[Codfis]
|
|
,[Codman]
|
|
,[Dttrim]
|
|
,[Credito]
|
|
,[Flg_NonDiv])
|
|
SELECT t.RETE,
|
|
t.Cod_Fiscale AS Chiave_ACN,
|
|
CASE WHEN LEN(t.COD_FISCALE) = 16 THEN t.Cod_Fiscale ELSE '' END AS Codfis,
|
|
a.COD_MANDATO AS Codman,
|
|
@DataFineTrim as Dttrim,
|
|
t.Somma_credito as Credito,
|
|
'S' AS Flg_NonDiv
|
|
-- into #nuovatab
|
|
FROM #temp t
|
|
INNER JOIN C6StagingPeriodico.APPO_CONTRATTI a ON t.RETE = a.rete AND t.Cod_Fiscale = a.COD_FISCALE;
|
|
-- -- Utilizziamo il comando MERGE per sincronizzare i dati tra le due tabelle
|
|
--MERGE INTO [C6MartPeriodico].[RP_ClientiPtfNonDiv] AS dest
|
|
--USING #nuovatab AS src
|
|
--ON dest.rete = src.rete and dest.chiave_ACN= src.chiave_ACN and dest.dttrim=src.dttrim
|
|
--WHEN MATCHED THEN
|
|
-- UPDATE SET dest.credito = src.credito, dest.flg_NonDiv = src.flg_NonDiv, dest.AzioneMerge='UPDATE/NO VAR'
|
|
--WHEN NOT MATCHED BY TARGET THEN
|
|
-- INSERT (AzioneMerge,Rete, Chiave_ACN, Codfis, Codman, Dttrim, Credito, Flg_NonDiv) VALUES
|
|
-- ('INSERT',src.Rete, src.Chiave_ACN, src.Codfis, src.Codman, src.Dttrim, src.Credito, src.Flg_NonDiv);
|
|
-- Log esecuzione
|
|
UPDATE
|
|
LOG_ESECUZIONE_PERIODICO
|
|
SET
|
|
Fine = GETDATE(),
|
|
Tipo = 'INSERT',
|
|
Righe = @@ROWCOUNT
|
|
WHERE
|
|
Nome = 'RP_ST_ClientiPtfNonDiv' AND
|
|
Inizio = (
|
|
SELECT
|
|
MAX(Inizio)
|
|
FROM
|
|
LOG_ESECUZIONE_PERIODICO
|
|
WHERE
|
|
Nome = 'RP_ST_ClientiPtfNonDiv'
|
|
);
|
|
END; |