PDC_REPORT_CreazioneDB/sql/Produzione/procedure/C6MartPeriodico_POPOLA_S132ProfiloRischioAdeguatezza_PROVVISORIA.sql
2025-06-10 15:29:00 +02:00

119 lines
4.0 KiB
SQL

CREATE procedure [C6MartPeriodico].[POPOLA_S132ProfiloRischioAdeguatezza_PROVVISORIA]
AS
BEGIN
--------------------------------------------------------
--*****************************************************
-- Replat della Sp PL_MP_S132ProfiloRischioAdeguatezza
-- Attenzione : la insert sulla tabella TB_S132ProfiloRischioAdeguatezza inserisci su alcuni campi valori
-- che successivamente sono aggiornati con un UPD ( vedi fine SP )
--*****************************************************
SET NOCOUNT ON;
--truncate table C6MartPeriodico.TB_S132ProfiloRischioAdeguatezza
insert into C6MartPeriodico.TB_S132ProfiloRischioAdeguatezza
SELECT
PATRBF.RETE,
PATRBF.COD_FISCALE,
PATRBF.INSTITUTENAME,
CTV,
M.PROFILO_ASS AS CODICEPROFILO,
--CONVERT(DATETIME,M.DATA_INIZIO_VAL) AS DATAINIZIOVALIDITA,
DBO.TOSHORTDATESTRING(M.DATA_INIZIO_VAL) AS DATAINIZIOVALIDITA,
CR.MAX_VAR AS VARMAX,
ProfiliDiRischio.NOMEPROFILO as NOMEPROFILO,
RISK_AGG.VAR_PERC_PTF,-- VAR,
null VARSTRING,
RISK_AGG.CREDITRISK RISKCLASS,
CASE
WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.a.'
WHEN RISK_AGG.creditrisk is null THEN 'n.a.'
WHEN RISK_AGG.creditrisk = 0.00 THEN 'n.a.'
ELSE NULL
END AS RISKCLASSSTRING,
ISNULL(RISK_AGG.COPERTURA,0.00) COVERAGE,
NULL AS COVERAGESTRING,
--V changed from string value (descrizione) to the numeric (profilo)
M.RISKCLASS AS RISKCLASSMAX,
(SUM(CTV) OVER (PARTITION BY PATRBF.COD_FISCALE,PATRBF.RETE, PATRBF.INSTITUTENAME) /
-- 16.07.2011 COLAIANNI-CONSOLI GESTIONE DIVISIONE PER ZERO
CASE WHEN ( SUM(CTV) OVER (PARTITION BY PATRBF.RETE, PATRBF.COD_FISCALE) ) = 0
THEN 1
ELSE SUM(CTV) OVER (PARTITION BY PATRBF.RETE, PATRBF.COD_FISCALE)
END )
*100 AS PERCENTAGE,
case when RISK_AGG.VAR_PERC_PTF > CR.MAX_VAR then 0 else 1 end as VarIsOk,
case when isnull(RISK_AGG.CREDITRISK,0) > Ck.PROFILO then 0 else 1 end as RiskClassIsOk,
CASE WHEN CMP.COMPLESSITA > M.EXPERIENCE THEN 0 ELSE 1 END as ComplexityIsOk,
RISK_AGG.Ully_perc
FROM
(
select
PATRBF.RETE,
PATRBF.COD_FISCALE,
CASE WHEN PATRBF.RETE='F' THEN 'Patrimonio Fideuram' ELSE 'Patrimonio Sanpaolo Invest' END AS INSTITUTENAME,
SUM(PATRBF.CTV) AS CTV
from
c6martperiodico.patrimonio_bf PATRBF
where
1=1
and cod_fiscale = 'DLLPLG43L04I625G'
and rete= 'F'
GROUP BY
PATRBF.RETE,
PATRBF.COD_FISCALE,
CASE WHEN PATRBF.RETE='F' THEN 'Patrimonio Fideuram' ELSE 'Patrimonio Sanpaolo Invest' END
) PATRBF
LEFT OUTER JOIN
c6martperiodico.MIFID AS M
ON
PATRBF.COD_FISCALE=M.COD_FISCALE
AND PATRBF.RETE=M.RETE
LEFT OUTER JOIN c6martperiodico.CODIFICA_RISCHIO AS CR
ON M.PROFILO_ASS = CR.PROFILO
LEFT OUTER JOIN
c6martperiodico.CODIFICA_CREDITRISK CK
ON
M.riskclass=CK.PROFILO
LEFT OUTER JOIN
c6martperiodico.RISCHIO_AGGREGATO RISK_AGG
ON
PATRBF.COD_FISCALE=RISK_AGG.COD_FISCALE
AND PATRBF.RETE=RISK_AGG.RETE
left outer join C6MartPeriodico.COMPLESSITA cmp
on
CMP.COD_FISCALE=PATRBF.COD_FISCALE
AND
CMP.RETE=PATRBF.RETE
INNER JOIN DBO.ProfiliDiRischio AS ProfiliDiRischio
ON M.PROFILO_ASS = ProfiliDiRischio.CODICEPROFILO
where
(
RISK_AGG.COD_AGGREG= 'COMPLESSIVO|BF'
)
update s132
set var = ( CASE
WHEN (nocc - CC = 0 ) THEN 0.00
else var
END ),
COVERAGE = ( CASE
WHEN (nocc - CC = 0 ) THEN 100
else COVERAGE
END )
--,
--VARSTRING=( CASE
-- WHEN VARSTRING = 0.00 AND (nocc - CC <> 0 ) THEN 'n.c.'
--END )
from c6martperiodico.TB_S132ProfiloRischioAdeguatezza s132
inner join (
select rete,cod_fiscale
,sum ( case when tipo_prodotto ='CC' then tot else 0 end ) as cc
,sum ( tot ) as nocc
from
( select rete,cod_fiscale,tipo_prodotto,count(*) tot
from c6martperiodico.patrimonio_Bf
where cod_fiscale = 'DLLPLG43L04I625G' and rete = 'F'
group by rete,cod_fiscale,tipo_prodotto
) as gr
group by rete,cod_fiscale
) as tabCount
on tabcount.rete= s132.rete and tabcount.cod_fiscale=s132.cod_fiscale
END