-- ============================================= -- Author: Paolo Giovanetti / TRINGALI PER FIDUCIARIE -- Create date: -- Description: -- ============================================= CREATE procedure [C6Mart].[RP_DM_W6CLIESG] AS BEGIN SET NOCOUNT ON; -- Log esecuzione INSERT INTO LOG_ESECUZIONE (Nome, Inizio, Nota) VALUES ( 'RP_DM_W6CLIESG', GETDATE(), 'Elaborazione Lettere di Benvenuto' ) TRUNCATE TABLE C6Mart.SPB_W6CLIESG TRUNCATE TABLE C6Mart.W6CLIESG INSERT INTO C6Mart.SPB_W6CLIESG ( [Rete] ,[Codice_Agente] ,[Codice_Fiscale] ,[Piva_Fiduciaria] ,[Codman] ,[BeneficioDiversificazione] ,[ValoreVaR] ,[Riserva] ,[PesoSostESG] ,[CSP] ,[ConcLungoPeriodo] ,[Liquidita] ,[NoSostESG] ,[SostPercE] ,[SostPercS] ,[SostPercG] ,[SostESGInLinea] ,[SostPercEInLinea] ,[SostPercSInLinea] ,[SostPercGInLinea] ,[NoSostSFDR] ,[SostSFDR] ,[SostSFDRInLinea] ,[NoSostTaxonomy] ,[SostTaxonomy] ,[SostTaxonomyInLinea] ,[NoSostPaiE] ,[SostPaiE] ,[SostPaiEInLinea] ,[NoSostPaiS] ,[SostPaiS] ,[SostPaiSInLinea] ,[Sost_E] ,[Sost_S] ,[Sost_G] ,[percESG] ,[UlterioriPrefSost] ,[PercSFDR] ,[PercTaxonomy] ,[PAI_E] ,[PAI_S] ,[ListPAI_E] ,[ListPAI_S]) SELECT distinct [Rete] ,[Codice_Agente] ,case when ISNULL(CODMAN,'')<>'' then 'FF@'+CODMAN else Codice_Fiscale end as Codice_Fiscale ,[Piva_Fiduciaria] ,[Codman] ,[BeneficioDiversificazione] ,[ValoreVaR] ,[Riserva] ,[PesoSostESG] ,[CSP] ,[ConcLungoPeriodo] ,[Liquidita] ,[NoSostESG] ,[SostPercE] ,[SostPercS] ,[SostPercG] ,[SostESGInLinea] ,[SostPercEInLinea] ,[SostPercSInLinea] ,[SostPercGInLinea] ,[NoSostSFDR] ,[SostSFDR] ,[SostSFDRInLinea] ,[NoSostTaxonomy] ,[SostTaxonomy] ,[SostTaxonomyInLinea] ,[NoSostPaiE] ,[SostPaiE] ,[SostPaiEInLinea] ,[NoSostPaiS] ,[SostPaiS] ,[SostPaiSInLinea] ,[Sost_E] ,[Sost_S] ,[Sost_G] ,[percESG] ,[UlterioriPrefSost] ,[PercSFDR] ,[PercTaxonomy] ,isnull([PAI_E],'') ,isnull([PAI_S],'') ,[ListPAI_E] ,[ListPAI_S] FROM [C6StampeCentralizzate].[C6Staging].[SPB_W6CliESG] drop table if exists #st_split_E drop table if exists #st_split_S drop table if exists #st_split_ES -- Step 1: Creazione delle tabelle temporanee SELECT value AS ListPAI_E, [Rete], [Codice_Agente], CASE WHEN CODMAN <> '' THEN 'FF@' + CODMAN ELSE Codice_Fiscale END AS COD_FISCALE INTO #st_split_E FROM C6Mart.SPB_W6CLIESG CROSS APPLY STRING_SPLIT(ListPAI_E, '|') SELECT value AS ListPAI_S, [Rete], [Codice_Agente], CASE WHEN CODMAN <> '' THEN 'FF@' + CODMAN ELSE Codice_Fiscale END AS COD_FISCALE INTO #st_split_S FROM C6Mart.SPB_W6CLIESG CROSS APPLY STRING_SPLIT(ListPAI_S, '|') --select * from C6Mart.SPB_W6CLIESG --select * from #st_split_E --select * from #st_split_S -- Step 2: Aggregare le descrizioni in un'unica query SELECT [Rete], [COD_FISCALE], STRING_AGG(CASE WHEN ListPAI_E = 'PAI_A01' THEN 'Emissioni gas serra' WHEN ListPAI_E = 'PAI_A02' THEN 'Biodiversità' WHEN ListPAI_E = 'PAI_A03' THEN 'Acqua' WHEN ListPAI_E = 'PAI_A04' THEN 'Rifiuti' WHEN ListPAI_E = 'PAI_A05' THEN 'Governativi di tipo Ambientale' WHEN ListPAI_E = 'PAI_A07' THEN 'Efficienza energetica' WHEN ListPAI_E = 'PAI_A08' THEN 'Settore Immobiliare' ELSE NULL END, ', ') AS PAI_E, STRING_AGG(CASE WHEN ListPAI_S = 'PAI_S01' THEN 'Questioni Sociali e dei Dipendenti' WHEN ListPAI_S = 'PAI_S02' THEN 'Governativi di tipo Sociale' ELSE NULL END, ', ') AS PAI_S into #st_split_ES FROM ( SELECT Rete, COD_FISCALE, ListPAI_E, NULL AS ListPAI_S FROM #st_split_E UNION ALL SELECT Rete, COD_FISCALE, NULL AS ListPAI_E, ListPAI_S FROM #st_split_S ) AS Combined GROUP BY [Rete], [COD_FISCALE] update b set b.PAI_E=es.PAI_E, b.PAI_S=es.PAI_S from C6Mart.SPB_W6CLIESG b inner join #st_split_ES es on b.Rete = es.Rete and b.Codice_Fiscale = es.COD_FISCALE insert into [C6Mart].[W6CLIESG] SELECT CAST(CONVERT(VARCHAR(8), GETDATE(), 112) AS DECIMAL(8, 0)) AS DTTRIM, RETE, codice_fiscale as CODFIS, '' as CODMAN, UlterioriPrefSost as U_PREFSOST, case when isnull(PercSFDR,0.00)=0.00 then 'N' else 'S' end as FLAGSFDR, case when isnull(PercTaxonomy,0.00)=0.00 then 'N' else 'S' end as FLAGTAXO, case when ListPAI_E='' and ListPAI_S='' then 'N' else 'S' end as FLAGPAI, PercSFDR as SFDR_PERC, PercTaxonomy as TAXO_PERC, case when ListPAI_E like '%PAI_A01%' then 'S' else 'N' end as PAI_A01, case when ListPAI_E like '%PAI_A02%' then 'S' else 'N' end as PAI_A02, case when ListPAI_E like '%PAI_A03%' then 'S' else 'N' end as PAI_A03, case when ListPAI_E like '%PAI_A04%' then 'S' else 'N' end as PAI_A04, case when ListPAI_E like '%PAI_A05%' then 'S' else 'N' end as PAI_A05, case when ListPAI_E like '%PAI_A07%' then 'S' else 'N' end as PAI_A07, case when ListPAI_E like '%PAI_A08%' then 'S' else 'N' end as PAI_A08, case when ListPAI_S like '%PAI_S01%' then 'S' else 'N' end as PAI_S01, case when ListPAI_S like '%PAI_S02%' then 'S' else 'N' end as PAI_S02, CASE WHEN ListPAI_E like '%PAI_A01%' THEN 'Emissioni gas serra' else '' end as PAI_A1, CASE WHEN ListPAI_E like '%PAI_A02%' THEN 'Biodiversità' else '' end as PAI_A2, CASE WHEN ListPAI_E like '%PAI_A03%' THEN 'Acqua' else '' end as PAI_A3, CASE WHEN ListPAI_E like '%PAI_A04%' THEN 'Rifiuti' else '' end as PAI_A4, CASE WHEN ListPAI_E like '%PAI_A05%' THEN 'Governativi di tipo Ambientale' else '' end as PAI_A5, CASE WHEN ListPAI_E like '%PAI_A07%' THEN 'Efficienza energetica' else '' end as PAI_A7, CASE WHEN ListPAI_E like '%PAI_A08%' THEN 'Settore Immobiliare' else '' end as PAI_A8, CASE WHEN ListPAI_S like '%PAI_S01%' THEN 'Questioni Sociali e dei Dipendenti' else '' end as PAI_S1, CASE WHEN ListPAI_S like '%PAI_S02%' THEN 'Governativi di tipo Sociale' else '' end as PAI_S2, PAI_E as PAI_A, PAI_S, 'N' as PAI_NO_DETT, PesoSostESG as PERC1ESG, SostPercE as PERCAMB, SostPercS as PERCSOC, SostPercG as PERCGOV, SostPercEInLinea as PERCAMB_OK, SostPercsInLinea as PERCSOC_OK, SostPercgInLinea as PERCGOV_OK, SostSFDR as SFDR_PERCT, SostSFDRInLinea as SFDR_PERC_OK, SostTaxonomy as TAXO_PERCT, SostTaxonomyInLinea as TAXO_PERC_OK, SostPaiE as PAIA_PERCT, SostPaiEInLinea as PAIA_PERC_OK, SostPaiS as PAIS_PERCT, SostPaiSInLinea as PAIS_PERC_OK from [c6mart].[SPB_W6CliESG] UPDATE LOG_ESECUZIONE SET Fine = GETDATE(), Tipo = 'INSERT', Righe = @@ROWCOUNT WHERE Nome = 'RP_DM_W6CliESG' AND Inizio = ( SELECT MAX(Inizio) FROM LOG_ESECUZIONE WHERE Nome = 'RP_DM_W6CliESG' ) END