PDC_REPORT_CreazioneDB/sql/storedCollaudo/C6MartPeriodico_PL_D2_S169RischiomercatoRischiocredito.sql
2025-06-09 17:09:11 +02:00

557 lines
16 KiB
Transact-SQL

-- Stored procedure
-- =============================================
-- Author: <Alessandro Tringali>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
--[C6MartPeriodico].[PL_D2_S169RischiomercatoRischiocredito] 'S','BLDMCL41L09L378V'
CREATE procedure [C6MartPeriodico].[PL_D2_S169RischiomercatoRischiocredito]
-- Add the parameters for the stored procedure here
@Rete char(1),
@CodiceFiscale varchar(16)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SELECT
PATRBF.RETE,
PATRBF.COD_FISCALE,
PATRBF.INSTITUTENAME,
CTV,
M.PROFILO_ASS AS CODICEPROFILO,
CR.MAX_VAR AS VARMAX,
RISK_AGG.VAR_PERC_PTF AS VAR ,
CASE
WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.c.'
ELSE NULL
END AS VARSTRING,
RISK_AGG.CREDITRISK RISKCLASS,
CASE
WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.c.'
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) AS COVERAGE,
--V La copertura viene valorizzata con un valore da 0 da 100
-- CASE
-- WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.c.'
-- ELSE
NULL
-- END
AS COVERAGESTRING,
M.RISKCLASS AS RISKCLASSMAX,
round((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 ,2)AS PERCENTAGE,
--V
ORDINE,
RISK_AGG.Ully_perc
-- 16/7/2018
into #appo
-- fine 16/7/2018
FROM
(
select
PATRBF.RETE,
PATRBF.COD_FISCALE,
CASE WHEN PATRBF.RETE='F' THEN 'Patrimonio Fideuram' WHEN PATRBF.RETE='S' then 'Patrimonio Sanpaolo Invest' WHEN PATRBF.RETE='W' then 'Patrimonio IW Private Inv.' END AS INSTITUTENAME,
SUM(PATRBF.CTV) AS CTV,
--V
1 as ORDINE,
RISK_AGG.Ully_perc
from
c6martperiodico.patrimonio_bf PATRBF,C6MartPeriodico.RISCHIO_AGGREGATO RISK_AGG
where
1=1
and PATRBF.COD_FISCALE = RISK_AGG.COD_FISCALE
and PATRBF.rete= RISK_AGG.rete
and PATRBF.cod_fiscale = @codiceFiscale
and PATRBF.rete= @rete
and PATRBF.CTV > 0
and
(
RISK_AGG.COD_AGGREG= 'COMPLESSIVO|BF' --or
--RISK_AGG.COD_AGGREG= 'COMPLESSIVO|TERZI'
)
GROUP BY
PATRBF.RETE,
PATRBF.COD_FISCALE,
RISK_AGG.Ully_perc,
CASE WHEN PATRBF.RETE='F' THEN 'Patrimonio Fideuram' WHEN PATRBF.RETE='S' then 'Patrimonio Sanpaolo Invest' WHEN PATRBF.RETE='W' then 'Patrimonio IW Private Inv.' END
UNION
SELECT
TERZI.RETE,
TERZI.COD_FISCALE,
'Patrimonio altri Istituti' AS INSTITUTENAME,
SUM(ROUND(TERZI.CTV,2)) AS CTV,
--V
2 as ORDINE,
RISK_AGG.Ully_perc
FROM
c6martperiodico.PATRIMONIO_TERZI TERZI,C6MartPeriodico.RISCHIO_AGGREGATO RISK_AGG
where
1=1
and TERZI.COD_FISCALE = RISK_AGG.COD_FISCALE
and TERZI.rete= RISK_AGG.rete
and TERZI.cod_fiscale =@codiceFiscale
and TERZI.rete=@rete
and TERZI.CTV > 0
and
(
--RISK_AGG.COD_AGGREG= 'COMPLESSIVO|BF' or
RISK_AGG.COD_AGGREG= 'COMPLESSIVO|TERZI'
)
GROUP BY
TERZI.RETE,
TERZI.COD_FISCALE,
RISK_AGG.Ully_perc
) 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
AND
(case when RISK_AGG.COD_AGGREG = 'COMPLESSIVO|BF' and PATRBF.RETE= 'F' then 'Patrimonio Fideuram'
WHEN RISK_AGG.COD_AGGREG= 'COMPLESSIVO|BF' and PATRBF.RETE= 'S' then 'Patrimonio Sanpaolo Invest'
WHEN RISK_AGG.COD_AGGREG= 'COMPLESSIVO|BF' and PATRBF.RETE= 'W' then 'Patrimonio IW Private Inv.'
else 'Patrimonio altri Istituti' end)= PATRBF.INSTITUTENAME
where
(
RISK_AGG.COD_AGGREG= 'COMPLESSIVO|BF' or
RISK_AGG.COD_AGGREG= 'COMPLESSIVO|TERZI'
)
UNION ALL
SELECT
PATRBF.RETE,
PATRBF.COD_FISCALE,
'Patrimonio Complessivo' AS INSTITUTENAME,
SUM(CTV),
MAX(M.PROFILO_ASS) AS CODICEPROFILO,
MAX(CR.MAX_VAR) AS VARMAX,
MAX(RISK_AGG.VAR_PERC_PTF) AS VAR ,
MAX( CASE
WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.c.'
ELSE NULL
END) AS VARSTRING,
MAX(RISK_AGG.CREDITRISK) RISKCLASS,
MAX(
case WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.c.'
WHEN RISK_AGG.creditrisk is null THEN 'n.a.'
WHEN RISK_AGG.creditrisk = 0.00 THEN 'n.a.'
ELSE NULL
END )
AS RISKCLASSSTRING,
MAX(ISNULL(RISK_AGG.COPERTURA,0.00)) AS COVERAGE,
MAX( CASE
WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.c.'
ELSE NULL
END) AS COVERAGESTRING,
--MAX(CK.DESCRIZIONE) AS RISKCLASSMAX,
MAX(M.RISKCLASS) AS RISKCLASSMAX,
100 AS PERCENTAGE,
--V
3 AS ORDINE,
RISK_AGG.Ully_perc
FROM
(
select
PATRBF.RETE,
PATRBF.COD_FISCALE,
SUM(PATRBF.CTV) AS CTV
from
c6martperiodico.patrimonio_bf PATRBF
where
1=1
and cod_fiscale =@codiceFiscale
and rete=@rete
and PATRBF.CTV > 0
GROUP BY
PATRBF.RETE,
PATRBF.COD_FISCALE
UNION
SELECT
TERZI.RETE,
TERZI.COD_FISCALE,
SUM(ROUND(TERZI.CTV,2)) AS CTV
FROM
c6martperiodico.PATRIMONIO_TERZI TERZI
where
1=1
and cod_fiscale =@codiceFiscale
and rete=@rete
and TERZI.CTV > 0
GROUP BY
TERZI.RETE,
TERZI.COD_FISCALE
) 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
where
(
RISK_AGG.COD_AGGREG= 'COMPLESSIVO'
)
GROUP BY
PATRBF.RETE,
PATRBF.COD_FISCALE,
RISK_AGG.Ully_perc
--V
order by ordine
--------------------------------------------- 16/7/2018
declare @contaPatrimoni smallint
select @contaPatrimoni = count(*) from #appo where ordine = 1
if @contaPatrimoni = 0 --manca il patrimonio casa
begin
select * from (
select top 1
#appo.RETE,
#appo.COD_FISCALE,
case when #appo.RETE= 'F' then 'Patrimonio Fideuram'
WHEN #appo.RETE= 'S' then 'Patrimonio Sanpaolo Invest'
when #appo.RETE= 'W' then 'Patrimonio IW Private Inv.'
end as INSTITUTENAME,
0 as CTV,
#appo.CODICEPROFILO,
#appo.VARMAX,
0 AS VAR,
'n.c.' AS VARSTRING,
0 as RISKCLASS,
'n.c.' as RISKCLASSSTRING,
#appo.COVERAGE,
NULL AS COVERAGESTRING,
#appo.RISKCLASSMAX,
0.0 as PERCENTAGE,
1 as ordine,
0 as Ully_perc
from #appo
union
select * from #appo) risultato order by ordine;
end
else
select * from #appo order by ordine;
------------------------------------------ fine 16/7/2018
--6,7,9,13 della appo
--case
-- when var <= varmax then '1'
-- when var > varmax then '0'
-- else -1
--end as rischio_mercato,
--case
-- when riskclass is null then '1'
-- when riskclass <= convert(int,RISKCLASSMAX) then '1'
-- when riskclass > convert(int,RISKCLASSMAX) then '0'
-- else -1
--end as rischio_credito
END
--USE [C6StampeCentralizzate]
--GO
--/****** Object: StoredProcedure [C6MartPeriodico].[PL_D2_S169RischiomercatoRischiocredito] Script Date: 09/02/2022 11:34:55 ******/
--SET ANSI_NULLS ON
--GO
--SET QUOTED_IDENTIFIER ON
--GO
---- Stored procedure
---- =============================================
---- Author: <Alessandro Tringali>
---- Create date: <Create Date,,>
---- Description: <Description,,>
---- =============================================
-- --[C6MartPeriodico].[PL_D2_S169RischiomercatoRischiocredito] 'S','BLDMCL41L09L378V'
--ALTER procedure [C6MartPeriodico].[PL_D2_S169RischiomercatoRischiocredito]
-- -- Add the parameters for the stored procedure here
-- @Rete char(1),
-- @CodiceFiscale varchar(16)
--AS
--BEGIN
-- -- SET NOCOUNT ON added to prevent extra result sets from
-- -- interfering with SELECT statements.
-- SET NOCOUNT ON;
-- SELECT
-- PATRBF.RETE,
-- PATRBF.COD_FISCALE,
-- PATRBF.INSTITUTENAME,
-- CTV,
-- M.PROFILO_ASS AS CODICEPROFILO,
-- CR.MAX_VAR AS VARMAX,
-- RISK_AGG.VAR_PERC_PTF AS VAR ,
-- CASE
-- WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.c.'
-- ELSE NULL
-- END AS VARSTRING,
-- RISK_AGG.CREDITRISK RISKCLASS,
-- CASE
-- WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.c.'
-- 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) AS COVERAGE,
----V La copertura viene valorizzata con un valore da 0 da 100
-- -- CASE
-- -- WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.c.'
---- ELSE
--NULL
---- END
--AS COVERAGESTRING,
-- M.RISKCLASS AS RISKCLASSMAX,
-- round((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 ,2)AS PERCENTAGE,
-- --V
-- ORDINE,
-- RISK_AGG.Ully_perc
-- -- 16/7/2018
-- into #appo
-- -- fine 16/7/2018
-- 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,
-- --V
-- 1 as ORDINE,
-- RISK_AGG.Ully_perc
-- from
-- c6martperiodico.patrimonio_bf PATRBF,C6MartPeriodico.RISCHIO_AGGREGATO RISK_AGG
-- where
-- 1=1
-- and PATRBF.COD_FISCALE = RISK_AGG.COD_FISCALE
-- and PATRBF.rete= RISK_AGG.rete
-- and PATRBF.cod_fiscale = @codiceFiscale
-- and PATRBF.rete= @rete
-- and PATRBF.CTV > 0
-- and
-- (
-- RISK_AGG.COD_AGGREG= 'COMPLESSIVO|BF' --or
-- --RISK_AGG.COD_AGGREG= 'COMPLESSIVO|TERZI'
-- )
-- GROUP BY
-- PATRBF.RETE,
-- PATRBF.COD_FISCALE,
-- RISK_AGG.Ully_perc,
-- CASE WHEN PATRBF.RETE='F' THEN 'Patrimonio Fideuram' ELSE 'Patrimonio Sanpaolo Invest' END
-- UNION
-- SELECT
-- TERZI.RETE,
-- TERZI.COD_FISCALE,
-- 'Patrimonio altri Istituti' AS INSTITUTENAME,
-- SUM(ROUND(TERZI.CTV,2)) AS CTV,
-- --V
-- 2 as ORDINE,
-- RISK_AGG.Ully_perc
-- FROM
-- c6martperiodico.PATRIMONIO_TERZI TERZI,C6MartPeriodico.RISCHIO_AGGREGATO RISK_AGG
-- where
-- 1=1
-- and TERZI.COD_FISCALE = RISK_AGG.COD_FISCALE
-- and TERZI.rete= RISK_AGG.rete
-- and TERZI.cod_fiscale =@codiceFiscale
-- and TERZI.rete=@rete
-- and TERZI.CTV > 0
-- and
-- (
-- --RISK_AGG.COD_AGGREG= 'COMPLESSIVO|BF' or
-- RISK_AGG.COD_AGGREG= 'COMPLESSIVO|TERZI'
-- )
-- GROUP BY
-- TERZI.RETE,
-- TERZI.COD_FISCALE,
-- RISK_AGG.Ully_perc
-- ) 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
-- AND
-- (case when RISK_AGG.COD_AGGREG = 'COMPLESSIVO|BF' and PATRBF.RETE= 'F' then 'Patrimonio Fideuram'
-- WHEN RISK_AGG.COD_AGGREG= 'COMPLESSIVO|BF' and PATRBF.RETE= 'S' then 'Patrimonio Sanpaolo Invest'
-- else 'Patrimonio altri Istituti' end)= PATRBF.INSTITUTENAME
-- where
-- (
-- RISK_AGG.COD_AGGREG= 'COMPLESSIVO|BF' or
-- RISK_AGG.COD_AGGREG= 'COMPLESSIVO|TERZI'
-- )
-- UNION ALL
-- SELECT
-- PATRBF.RETE,
-- PATRBF.COD_FISCALE,
-- 'Patrimonio Complessivo' AS INSTITUTENAME,
-- SUM(CTV),
-- MAX(M.PROFILO_ASS) AS CODICEPROFILO,
-- MAX(CR.MAX_VAR) AS VARMAX,
-- MAX(RISK_AGG.VAR_PERC_PTF) AS VAR ,
-- MAX( CASE
-- WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.c.'
-- ELSE NULL
-- END) AS VARSTRING,
-- MAX(RISK_AGG.CREDITRISK) RISKCLASS,
-- MAX(
-- case WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.c.'
-- WHEN RISK_AGG.creditrisk is null THEN 'n.a.'
-- WHEN RISK_AGG.creditrisk = 0.00 THEN 'n.a.'
-- ELSE NULL
-- END )
-- AS RISKCLASSSTRING,
-- MAX(ISNULL(RISK_AGG.COPERTURA,0.00)) AS COVERAGE,
-- MAX( CASE
-- WHEN ISNULL(RISK_AGG.COPERTURA,0.00) = 0.00 THEN 'n.c.'
-- ELSE NULL
-- END) AS COVERAGESTRING,
-- --MAX(CK.DESCRIZIONE) AS RISKCLASSMAX,
-- MAX(M.RISKCLASS) AS RISKCLASSMAX,
-- 100 AS PERCENTAGE,
-- --V
-- 3 AS ORDINE,
-- RISK_AGG.Ully_perc
-- FROM
-- (
-- select
-- PATRBF.RETE,
-- PATRBF.COD_FISCALE,
-- SUM(PATRBF.CTV) AS CTV
-- from
-- c6martperiodico.patrimonio_bf PATRBF
-- where
-- 1=1
-- and cod_fiscale =@codiceFiscale
-- and rete=@rete
-- and PATRBF.CTV > 0
-- GROUP BY
-- PATRBF.RETE,
-- PATRBF.COD_FISCALE
-- UNION
-- SELECT
-- TERZI.RETE,
-- TERZI.COD_FISCALE,
-- SUM(ROUND(TERZI.CTV,2)) AS CTV
-- FROM
-- c6martperiodico.PATRIMONIO_TERZI TERZI
-- where
-- 1=1
-- and cod_fiscale =@codiceFiscale
-- and rete=@rete
-- and TERZI.CTV > 0
-- GROUP BY
-- TERZI.RETE,
-- TERZI.COD_FISCALE
-- ) 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
-- where
-- (
-- RISK_AGG.COD_AGGREG= 'COMPLESSIVO'
-- )
-- GROUP BY
-- PATRBF.RETE,
-- PATRBF.COD_FISCALE,
-- RISK_AGG.Ully_perc
-- --V
-- order by ordine
-- --------------------------------------------- 16/7/2018
-- declare @contaPatrimoni smallint
-- select @contaPatrimoni = count(*) from #appo where ordine = 1
-- if @contaPatrimoni = 0 --manca il patrimonio casa
-- begin
-- select * from (
-- select top 1
-- #appo.RETE,
-- #appo.COD_FISCALE,
-- case when #appo.RETE= 'F' then 'Patrimonio Fideuram'
-- WHEN #appo.RETE= 'S' then 'Patrimonio Sanpaolo Invest'
-- end as INSTITUTENAME,
-- 0 as CTV,
-- #appo.CODICEPROFILO,
-- #appo.VARMAX,
-- 0 AS VAR,
-- 'n.c.' AS VARSTRING,
-- 0 as RISKCLASS,
-- 'n.c.' as RISKCLASSSTRING,
-- #appo.COVERAGE,
-- NULL AS COVERAGESTRING,
-- #appo.RISKCLASSMAX,
-- 0.0 as PERCENTAGE,
-- 1 as ordine,
-- 0 as Ully_perc
-- from #appo
-- union
-- select * from #appo) risultato order by ordine;
-- end
-- else
-- select * from #appo order by ordine;
-- ------------------------------------------ fine 16/7/2018
----6,7,9,13 della appo
----case
---- when var <= varmax then '1'
---- when var > varmax then '0'
---- else -1
----end as rischio_mercato,
----case
---- when riskclass is null then '1'
---- when riskclass <= convert(int,RISKCLASSMAX) then '1'
---- when riskclass > convert(int,RISKCLASSMAX) then '0'
---- else -1
----end as rischio_credito
--END