PDC_REPORT_CreazioneDB/sql/Testbes/procedure/C6MartPeriodico_Popola_S80BisEvoluzioneRischio.sql
2025-06-10 15:29:40 +02:00

191 lines
6.3 KiB
Transact-SQL

-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
--[C6MartPeriodico].[PL_S80BisEvoluzioneRischio]'F','02392500605S'
CREATE procedure [C6MartPeriodico].[Popola_S80BisEvoluzioneRischio]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @DataCongelamento DATETIME
SET @DataCongelamento = C6MartPeriodico.getDataCongelamento()
select @DataCongelamento
truncate table c6martperiodico.tb_S80BisEvoluzioneRischio
insert into c6martperiodico.tb_S80BisEvoluzioneRischio
SELECT
ini.rete,
ini.COD_FISCALE,
1 AS Fase,
INI.DATA_FOTO AS DataFase,
INI.VAR_MAX_PROFILO AS VarMassimoProfiloFinanziario,
--V
CASE
WHEN INI.VAR_COMPLESSIVO IS NULL THEN INI.VAR_COMPLESSIVO
ELSE ROUND(INI.VAR_COMPLESSIVO,2)
END AS VarComplessivo,
INI.VAR_COPERTURA AS Copertura,
INI.RISKCLASS,
INI.RISKCLASSMAX,
case
when INI.RISKCLASS is null then 'n.d.'
when INI.RISKCLASS = 0 then 'n.a.'
else null
end as RiskClassString,
case
when INI.RISKCLASSMAX is null then 'n.d.'
when INI.RISKCLASSMAX = 0 then 'n.a.'
else null
end as RiskClassMaxString
FROM
C6MartPeriodico.MONITORAGGIO_INIZIALE INI
LEFT OUTER join
C6MartPeriodico.MONITORAGGIO_REPORT rep
on
REP.RETE=INI.RETE
AND
REP.COD_FISCALE=INI.COD_FISCALE
UNION ALL
-- Precedente invio report
SELECT
rep.RETE ,
rep.COD_FISCALE ,
2 AS Fase,
rep.DATA_INVIO AS DataFase,
rep.VAR_MAX_PROFILO AS VarMassimoProfiloFinanziario,
--V
CASE
WHEN rep.VAR_COMPLESSIVO IS NULL THEN rep.VAR_COMPLESSIVO
ELSE ROUND(rep.VAR_COMPLESSIVO,2)
END AS VarComplessivo,
rep.VAR_COPERTURA AS Copertura,
rep.RISKCLASS,
rep.RISKCLASSMAX,
case when rep.RISKCLASS is null then 'n.a.'
else null
end as RiskClassString,
case when rep.RISKCLASSMAX is null then 'n.a.'
else null
end as RiskClassMaxString
FROM
C6MartPeriodico.MONITORAGGIO_INIZIALE INI
left outer join
C6MartPeriodico.MONITORAGGIO_REPORT rep
on
REP.RETE=INI.RETE
AND
REP.COD_FISCALE=INI.COD_FISCALE
WHERE
-- modifica del 24/7/2017 per gestire le situazioni limite dell'avvio monitoraggio a cavallo tra 2 trim (vedi segnalazione
-- del qc su cf F/TRRLDA52D04G190A)
--INI.DATA_FOTO < ISNULL(REP.DATA_INVIO,cast('29991231' as datetime))
CONVERT(varchar,ini.data_foto,112) <= convert(varchar,ISNULL(REP.DATA_INVIO,cast('29991231' as datetime)),112)
-- fine modifica del 24/7/2017
and ISNULL(DATA_INVIO,cast('29991231' as datetime))<@datacongelamento
UNION ALL
-- Situazione corrente
SELECT
BF.RETE ,
BF.COD_FISCALE,
3 fase,
CASE
WHEN @DataCongelamento IS NULL THEN GETDATE()
ELSE @DataCongelamento
END AS DataFase,
CR.MAX_VAR AS VarMassimoProfiloFinanziario,
--V
CASE WHEN RA.VAR_PERC_PTF IS NULL THEN 0.00
ELSE ROUND(RA.VAR_PERC_PTF,2)
END AS VarComplessivo,
--CASE
-- WHEN (@contaPOS - @contaCC = 0 ) THEN 100
-- ELSE isnull(RA.COPERTURA,0)
--END AS Copertura,
isnull(RA.COPERTURA,0) as copertura,
-- TRINGALI MODIFICARE
ra.creditrisk as RISKCLASS,
mifid.riskclass as RISKCLASSMAX,
case when ra.creditrisk is null then 'n.a.'
else null end as RiskClassString,
case when mifid.riskclass is null then 'n.a.'
else null end as RiskClassMaxString
FROM
C6MartPeriodico.vPatrimonioBFAggregato AS BF
INNER JOIN C6MartPeriodico.MIFID AS MIFID
ON BF.RETE = MIFID.RETE
AND BF.COD_FISCALE = MIFID.COD_FISCALE
INNER JOIN C6MartPeriodico.CODIFICA_RISCHIO AS CR
ON MIFID.PROFILO_ASS = CR.PROFILO
LEFT OUTER JOIN C6MartPeriodico.RISCHIO_AGGREGATO AS RA
ON RA.RETE = BF.RETE
AND RA.COD_FISCALE = BF.COD_FISCALE
AND RA.COD_AGGREG = 'COMPLESSIVO|BF'
-- Aggiornamento Copertura
update s80
set copertura = ( CASE
WHEN (nocc - CC = 0 ) THEN 100
ELSE copertura
END )
from c6martperiodico.tb_S80BisEvoluzioneRischio s80
inner join (
select rete,cod_fiscale
,sum ( case when tipo_prodotto ='CC' then tot else 0 end ) as cc
,sum ( case when tipo_prodotto <>'CC' then tot else 0 end ) as nocc
from
( select rete,cod_fiscale,tipo_prodotto,count(*) tot
from c6martperiodico.patrimonio_Bf
--where cod_fiscale = @codiceFiscale and rete = @rete
group by rete,cod_fiscale,tipo_prodotto
) as gr
group by rete,cod_fiscale
) as tabCount
on tabcount.rete= s80.rete and tabcount.cod_fiscale=s80.codicefiscale
-- Aggiornamento
SELECT RETE,COD_FISCALE, COUNT(*) tot
into #ini
FROM
C6MARTPERIODICO.MONITORAGGIO_INIZIALE
group by RETE,COD_FISCALE
having count(*) = 0
SELECT RETE,COD_FISCALE, COUNT(*) tot
into #att
FROM
C6MARTPERIODICO.MONITORAGGIO_ATTUALE
group by RETE,COD_FISCALE
having count(*) = 0
SELECT RETE,COD_FISCALE, COUNT(*) tot
into #ris
FROM C6MARTPERIODICO.RISCHIO_AGGREGATO
group by RETE,COD_FISCALE
having count(*) = 0
delete s80
from c6martperiodico.tb_S80BisEvoluzioneRischio s80
inner join (
select distinct
case when #ini.rete is null
then
case when #att.rete is null
then #ris.rete
else #att.rete
end
else #ini.rete
end rete,
case when #ini.cod_fiscale is null
then
case when #att.cod_fiscale is null
then #ris.cod_fiscale
else #att.cod_fiscale
end
else #ini.cod_fiscale
end codicefiscale
from #ini
right JOIN #att on #ini.rete = #att.rete and #att.cod_fiscale=#ini.cod_fiscale
right JOIN #ris on #ini.rete = #ris.rete and #ris.cod_fiscale=#ini.cod_fiscale
) cont
on cont.rete=s80.rete and cont.codicefiscale=s80.codicefiscale
--aggiunta insert into pez 20240628 poi da togliere
-- insert into[C6MartPeriodico].[TB_S80BisEvoluzioneRischio]
--select * from [C6MartPeriodico].[TB_S80BisEvoluzioneRischio_pez]
END