PDC_REPORT_CreazioneDB/sql/storedProduzione/C6Mart_RP_DM_W6CLIESG.sql
2025-06-06 19:02:52 +02:00

240 lines
7.0 KiB
SQL

-- =============================================
-- Author: Paolo Giovanetti / TRINGALI PER FIDUCIARIE
-- Create date: <Create Date,,>
-- Description: <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