160 lines
6.6 KiB
Transact-SQL
160 lines
6.6 KiB
Transact-SQL
-- =============================================
|
|
-- Author: <Alessandro Tringali>
|
|
-- Create date: <Create Date,,>
|
|
-- Description: <Description,,>
|
|
-- =============================================
|
|
CREATE procedure [C6Mart].[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 = C6MART.GETIDELAB()
|
|
SET @TIPO_ELAB = C6MART.GETTIPOELAB()
|
|
-- Log esecuzione
|
|
INSERT INTO LOG_ESECUZIONE
|
|
(Nome, Inizio, Nota)
|
|
VALUES (
|
|
'DM_PATRIMONIO_EMITTENTI',
|
|
GETDATE(),
|
|
'Elaborazione giornaliera'
|
|
)
|
|
TRUNCATE TABLE C6MART.PATRIMONIO_EMITTENTI
|
|
INSERT INTO
|
|
[C6MART].[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 C6MART.PATRIMONIO_BF H
|
|
LEFT OUTER join
|
|
C6MART.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+ '|'
|
|
when LEFT(h.ID_AREA,3)='Na' then 'RISFIN|NA|'
|
|
ELSE 'RISFIN|PIRAMIDE|' + LEFT(h.ID_AREA,3) + '|'
|
|
END
|
|
+ ltrim(rtrim(h.POSITION_ID))
|
|
left outer join
|
|
--
|
|
--select * from c6mart.rischioEmittenti
|
|
--select * from c6mart.rischio_aggregato
|
|
C6Mart.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) 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) 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
|
|
C6MART.PATRIMONIO_TERZI H
|
|
LEFT OUTER JOIN
|
|
C6MART.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
|
|
C6Mart.RISCHIOEMITTENTI K
|
|
on
|
|
R.CREDITRISKEMIT=ORDINE
|
|
WHERE
|
|
1=1
|
|
AND H.INTERMEDIARIO <> 'BF'
|
|
--AND V.POSITIONID=H.COD_PRODOTTO
|
|
-- Log esecuzione
|
|
UPDATE
|
|
LOG_ESECUZIONE
|
|
SET
|
|
Fine = GETDATE(),
|
|
Tipo = 'INSERT',
|
|
Righe = @@ROWCOUNT
|
|
WHERE
|
|
Nome = 'DM_PATRIMONIO_EMITTENTI' AND
|
|
Inizio = (
|
|
SELECT
|
|
MAX(Inizio)
|
|
FROM
|
|
LOG_ESECUZIONE
|
|
WHERE
|
|
Nome = 'DM_PATRIMONIO_EMITTENTI'
|
|
)
|
|
END |