-- ============================================= -- Author: -- Create date: -- Description: -- ============================================= --[C6MartPeriodico].[PL_S80BisEvoluzioneRischio]'F','02392500605S' CREATE procedure [C6MartPeriodico].[Popola_S80BisEvoluzioneRischio_20171222] 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() 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 END