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

161 lines
7.1 KiB
Transact-SQL

-- =============================================
-- Author: <Alessandro Tringali>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE procedure [C6MartPeriodico].[DM_PATRIMONIO_EMITTENTI]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
SET NOCOUNT ON;
DECLARE @ID_ELAB INT
DECLARE @TIPO_ELAB VARCHAR(1)
SET @ID_ELAB = C6MartPeriodico.GETIDELAB()
SET @TIPO_ELAB = C6MartPeriodico.GETTIPOELAB()
-- Log esecuzione
INSERT INTO LOG_ESECUZIONE_PERIODICO
(Nome, Inizio, Nota)
VALUES (
'DM_PATRIMONIO_EMITTENTI',
GETDATE(),
'Elaborazione trimestrale'
)
TRUNCATE TABLE C6MartPeriodico.PATRIMONIO_EMITTENTI
INSERT INTO
[C6MARTPERIODICO].[PATRIMONIO_EMITTENTI]
(
COD_FISCALE,
RETE,
POSITION_ID,
COD_PRODOTTO,
COD_ADEGUATEZZA,
INTERMEDIARIO,
CTV_INTERMEDIARIO,
CTV_INTER_NOCC_NEG,
EMITTENTE,
COMPLESSITA,
CTV_EMITTENTE,
CTV_PRODOTTO,
FLG_AZ_OB,
CREDITRISKCLASS,
CTV_AZIONARIO,
CTV_OBBLIGAZIONARIO,
CTV_AZ_OB_EMIT,
CTV_AZ_OB_EMIT_INTER,
CTV_COMPLESSIVO,
CTV_COMPL_NOCC_NEG,
CONC_EMITTENTE,
CONC_EMIT_INTERM,
COPERTURA
)
SELECT H.COD_FISCALE,
H.RETE,
H.POSITION_ID,
H.COD_PRODOTTO AS CATALOGUENAME,
'' AS COD_ADEGUATEZZA,
'BF' AS INTERMEDIARIO,
sum(h.ctv) over (partition by h.cod_fiscale, h.rete) AS PATRIMONIO_INTERMEDIARIO,
sum(case when h.tipo_prodotto='CC' and h.ctv < 0 then 0 else h.ctv END ) over (partition by h.cod_fiscale, h.rete) AS PATRIMONIO_INTER_nocc_neg,
H.EMITTENTE,
H.COMPLEX AS COMPLESSITA,
sum(h.ctv) over (partition by h.cod_fiscale, H.rete, H.EMITTENTE) AS PATRIMONIO_EMITTENTE,
h.ctv as CONTROVALORE_PRODOTTO,
CASE WHEN H.STRTYPE IN ('AZ', 'OB') THEN H.STRTYPE ELSE NULL END AS AZ_OB,
K.classe AS CREDITRISKCLASS,
SUM( case when STRTYPE = 'AZ' then h.ctv else 0 end ) OVER( PARTITION BY H.COD_FISCALE,H.RETE,EMITTENTE, H.POSITION_ID) AS CTV_AZIONARIO,
SUM(case when STRTYPE = 'OB' then h.ctv else 0 end ) OVER( PARTITION BY H.COD_FISCALE,H.RETE,EMITTENTE, H.POSITION_ID) AS CTV_OBBLIGAZIONARIO,
SUM( case when STRTYPE IN ( 'AZ','OB') then h.ctv else 0 end ) OVER( PARTITION BY H.COD_FISCALE,H.RETE,EMITTENTE) PATRIMONIO_AZ_OB_EMIT,
SUM( case when STRTYPE IN ( 'AZ','OB') then h.ctv else 0 end ) OVER( PARTITION BY H.COd_FISCALE,H.RETE,EMITTENTE) PATRIM_AZ_OB_EMIT_INTER,
sum(case when h.tipo_prodotto='CC' and h.ctv < 0 then 0 else h.ctv END) over (partition by h.cod_fiscale, h.rete) as PATRIMONIO_COMPLESSIVO,
sum(case when h.tipo_prodotto='CC' and h.ctv < 0 then 0 else h.ctv END) over (partition by h.cod_fiscale, h.rete) as PATRIMONIO_COMPL_nocc_neg,
0 as concentrazione_emittente,
0 AS concentraz_emit_interm,
r.copertura
FROM C6MARTPERIODICO.PATRIMONIO_BF H
LEFT OUTER join
C6MARTPERIODICO.RISCHIO_AGGREGATO R
on
H.COD_FISCALE=R.COD_FISCALE
AND H.RETE=R.RETE
AND r.COD_AGGREG =
((CASE
WHEN (h.NOME_PROGETTO IS NOT NULL)
THEN 'RISFIN|PIRAMIDE|' + LEFT(h.ID_AREA,3) + '|' + h.NOME_PROGETTO+ '|'+ isnull(cast(H.ordinamento_progetto as varchar),'')+'|'
ELSE
CASE WHEN (h.ID_AREA = 'NA') THEN 'RISFIN|' + LEFT(h.ID_AREA,3) + '|'
ELSE 'RISFIN|PIRAMIDE|' + LEFT(h.ID_AREA,3) + '|'
END
END)
+ h.POSITION_ID)
left outer join
--select * from
--C6MartPeriodico.CODIFICA_CREDITRISK K
C6MartPeriodico.RISCHIOEMITTENTI K
on
R.CREDITRISKEMIT=ORDINE
---- PATRIMONIO TERZI
UNION all
SELECT DISTINCT h.COD_FISCALE,
h.RETE,
'' AS POSITION_ID,
H.COD_PRODOTTO AS CATALOGUENAME,
'' as COD_ADEGUATEZZA,
CASE
WHEN h.INTERMEDIARIO = 'BF' THEN
NULL
ELSE
h.INTERMEDIARIO
END AS INTERMEDIARIO,
sum(ROUND(h.CTV,2)) over (partition by h.cod_fiscale, h.rete, H.INTERMEDIARIO) as PATRIMONIO_INTERMEDIARIO,
sum(case when h.tipo_prodotto='CC' and ROUND(h.CTV,2) < 0 then 0 else ROUND(h.CTV,2) END ) over (partition by h.cod_fiscale, h.rete, H.INTERMEDIARIO) AS PATRIMONIO_INTER_nocc_neg,
h.EMITTENTE,
h.complex as COMPLESSITA,
0 AS PATRIMONIO_EMITTENTE,
ROUND(h.CTV,2) as CONTROVALORE_PRODOTTO,
CASE WHEN H.STRTYPE IN ('AZ', 'OB') THEN H.STRTYPE ELSE NULL END AS AZ_OB,
K.classe AS CREDITRISKCLASS,
SUM( case when STRTYPE = 'AZ' then ROUND(h.CTV,2) else 0 end ) OVER( PARTITION BY H.COd_FISCALE,H.RETE, H.EMITTENTE, H.intermediario, H.COD_PRODOTTO_TERZI) AS CTV_AZIONARIO,--aggiunto il cod_prodotto_terzi per identificare il singolo prodotto
SUM(case when STRTYPE = 'OB' then h.ctv else 0 end ) OVER( PARTITION BY H.COD_FISCALE,H.RETE, H.EMITTENTE, H.intermediario, H.COD_PRODOTTO_TERZI ) AS CTV_OBBLIGAZIONARIO, --aggiunto il cod_prodotto_terzi per identificare il singolo prodotto
SUM( case when STRTYPE IN ( 'AZ','OB') then ROUND(h.CTV,2) else 0 end ) OVER( PARTITION BY H.COD_FISCALE,H.RETE,EMITTENTE) PATRIMONIO_AZ_OB_EMIT,
SUM( case when STRTYPE IN ( 'AZ','OB') then ROUND(h.CTV,2) else 0 end ) OVER( PARTITION BY H.COd_FISCALE,H.RETE,EMITTENTE, h.intermediario ) PATRIM_AZ_OB_EMIT_INTER,
sum(case when h.tipo_prodotto='CC' and ROUND(h.CTV,2) < 0 then 0 else h.ctv END) over (partition by h.cod_fiscale, h.rete) as PATRIMONIO_COMPLESSIVO,
sum(case when h.tipo_prodotto='CC' and ROUND(h.CTV,2) < 0 then 0 else h.ctv END) over (partition by h.cod_fiscale, h.rete, h.intermediario) as PATRIMONIO_COMPL_nocc_neg,
0 as concentrazione_emittente,
0 as concentraz_emit_interm,
r.copertura
FROM
C6MARTPERIODICO.PATRIMONIO_TERZI H
LEFT OUTER JOIN
C6MARTPERIODICO.RISCHIO_AGGREGATO R
ON
H.COD_FISCALE=R.COD_FISCALE
AND H.RETE=R.RETE
AND r.COD_AGGREG ='COMPLESSIVO|TERZI|' + RTRIM(H.INTERMEDIARIO) + '|' + RTRIM(H.chiave_thr)
LEFT OUTER join
C6Martperiodico.RISCHIOEMITTENTI K
on
R.CREDITRISKEMIT=ORDINE
WHERE
1=1
AND H.INTERMEDIARIO <> 'BF'
--AND V.POSITIONID=H.COD_PRODOTTO
-- Log esecuzione
UPDATE
LOG_ESECUZIONE_PERIODICO
SET
Fine = GETDATE(),
Tipo = 'INSERT',
Righe = @@ROWCOUNT
WHERE
Nome = 'DM_PATRIMONIO_EMITTENTI' AND
Inizio = (
SELECT
MAX(Inizio)
FROM
LOG_ESECUZIONE_PERIODICO
WHERE
Nome = 'DM_PATRIMONIO_EMITTENTI'
)
END