257 lines
8.7 KiB
Transact-SQL
257 lines
8.7 KiB
Transact-SQL
-- =============================================
|
|
-- Author: Paolo Giovanetti
|
|
-- Create date: 11/11/2008
|
|
-- Description: <Description,,>
|
|
-- Aggiunta GESTIONE EligoTitoli L192 (FCianfa, 01/12/2014)
|
|
-- =============================================
|
|
-- [C6MART].[PL_D2_S157ConfrontoPiramidi] 'F','ZCCLNR58P49H501R'
|
|
CREATE procedure [C6Mart].[PL_D2_S157ConfrontoPiramidi]
|
|
-- Add the parameters for the stored procedure here
|
|
@Rete char(1),
|
|
@CodiceFiscale varchar(16)
|
|
AS
|
|
BEGIN
|
|
SELECT
|
|
PIRAMIDE_MOD.RETE,
|
|
PIRAMIDE_MOD.COD_FISCALE,
|
|
PIRAMIDE_MOD.ID_AREA,
|
|
SUM (isnull(PIRAMIDE_MOD.PERC_AREA,0)) as PERC_AREA,
|
|
PIRAMIDE_VERT.CTV_AREA AS CONTROVALORE
|
|
INTO #PIRAMIDE_VERT
|
|
FROM
|
|
C6MART.PIRAMIDE_MOD
|
|
LEFT JOIN (
|
|
-- GROUP BY PER ACCORPARE I CTV_AREA SULLE PRE1 E PRE2 IN UNO UNICO CORRISPONDENTE A PRE
|
|
SELECT
|
|
RETE,
|
|
COD_FISCALE,
|
|
--LEFT(ID_AREA,3) AS ID_AREA,
|
|
CASE
|
|
WHEN ID_AREA = 'SELF' THEN LEFT(ID_AREA,4)
|
|
ELSE LEFT(ID_AREA,3)
|
|
END AS ID_AREA,
|
|
SUM(COALESCE(CTV,0)) AS CTV_AREA
|
|
FROM
|
|
C6MART.PATRIMONIO_BF PIRAMIDE_VERT
|
|
WHERE
|
|
PIRAMIDE_VERT.RETE = @Rete
|
|
AND PIRAMIDE_VERT.COD_FISCALE = @CodiceFiscale
|
|
--modificata atringali -- AND ID_AREA NOT IN ('Cc')
|
|
GROUP BY
|
|
--RETE, COD_FISCALE, LEFT(ID_AREA,3)
|
|
RETE, COD_FISCALE,
|
|
CASE
|
|
WHEN ID_AREA = 'SELF' THEN LEFT(ID_AREA,4)
|
|
ELSE LEFT(ID_AREA,3)
|
|
END
|
|
) PIRAMIDE_VERT
|
|
ON
|
|
PIRAMIDE_VERT.ID_AREA = PIRAMIDE_MOD.ID_AREA
|
|
WHERE
|
|
PIRAMIDE_MOD.ID_AREA IN ('RIS','EXT','LIQ','PRE','CC','NA','SELF','INV')
|
|
-- OR (PIRAMIDE_MOD.ID_AREA = 'INV')) --AND PIRAMIDE_MOD.NOME_PROGETTO IS NULL)) --- 16/09 ** DA VERIFICARE
|
|
AND PIRAMIDE_MOD.RETE = @Rete
|
|
AND PIRAMIDE_MOD.COD_FISCALE = @CodiceFiscale
|
|
group by PIRAMIDE_MOD.RETE,
|
|
PIRAMIDE_MOD.COD_FISCALE,
|
|
PIRAMIDE_MOD.ID_AREA,
|
|
PIRAMIDE_VERT.CTV_AREA
|
|
IF(@@ROWCOUNT>0)
|
|
BEGIN
|
|
-- Ordinamento per Area di bisogno
|
|
DECLARE @TOTControvaloreAttuale DECIMAL(20,2)
|
|
SELECT @TOTControvaloreAttuale = SUM(ATTUALE.CONTROVALORE)
|
|
FROM #PIRAMIDE_VERT ATTUALE
|
|
WHERE ATTUALE.RETE = @Rete
|
|
AND ATTUALE.COD_FISCALE = @CodiceFiscale
|
|
--V
|
|
AND ID_AREA not in ('Na', 'Cc','Self','LIGHT','VOID')
|
|
--V
|
|
DECLARE @TOTCCSELF AS INT
|
|
SELECT @TOTCCSELF = COUNT(*)
|
|
FROM C6MART.PATRIMONIO_BF
|
|
WHERE PATRIMONIO_BF.RETE = @Rete
|
|
AND PATRIMONIO_BF.COD_FISCALE = @CodiceFiscale
|
|
--AND TIPO_PRODOTTO = 'Cc'
|
|
AND (TIPO_PRODOTTO = 'Cc' OR ISIN in('EURO00000009', 'EURO10000007') )
|
|
--INIZIO INTERVENTI OMNIA quiii2
|
|
DECLARE @TOTSELF AS INT
|
|
SELECT @TOTSELF = COUNT(*)
|
|
FROM C6MART.PATRIMONIO_BF
|
|
WHERE PATRIMONIO_BF.RETE = @Rete
|
|
AND PATRIMONIO_BF.COD_FISCALE = @CodiceFiscale
|
|
AND ISIN in('EURO00000009', 'EURO10000007')
|
|
--FINE INTERVENTI OMNIA quiii2
|
|
--V
|
|
DECLARE @TOT AS INT
|
|
SELECT @TOT = COUNT(*)
|
|
FROM C6MART.PATRIMONIO_BF
|
|
WHERE PATRIMONIO_BF.RETE = @Rete
|
|
AND PATRIMONIO_BF.COD_FISCALE = @CodiceFiscale
|
|
-------------------------------------------------------------------------------------
|
|
--INIZIO INTERVENTI OMNIA QUIII
|
|
DECLARE @TOTSELFLIQ AS INT
|
|
SELECT @TOTSELFLIQ = COUNT(*)
|
|
FROM C6MART.PATRIMONIO_BF
|
|
WHERE PATRIMONIO_BF.RETE = @Rete
|
|
AND PATRIMONIO_BF.COD_FISCALE = @CodiceFiscale
|
|
AND ISIN in('EURO00000009', 'EURO10000007')
|
|
AND ID_AREA = 'LIQ'
|
|
DECLARE @TOTLIQ AS INT
|
|
SELECT @TOTLIQ = COUNT(*)
|
|
FROM C6MART.PATRIMONIO_BF
|
|
WHERE PATRIMONIO_BF.RETE = @Rete
|
|
AND PATRIMONIO_BF.COD_FISCALE = @CodiceFiscale
|
|
AND ID_AREA = 'LIQ'
|
|
--FINE INTERVENTI OMNIA QUIII
|
|
--------------------------------------------------------------------------------------
|
|
SELECT
|
|
AREA_BISOGNO.ID_AREA AS NeedArea,
|
|
AREA_BISOGNO.NOME_AREA AS AreaName,
|
|
ISNULL(ATTUALE.PERC_AREA,0) AS PercentualeModello,
|
|
CASE
|
|
WHEN @TOTControvaloreAttuale = 0 THEN 0
|
|
ELSE (100 * ISNULL(ATTUALE.CONTROVALORE,0) / ISNULL(@TOTControvaloreAttuale,1))
|
|
END AS PercentualeAttuale,
|
|
ROUND(ISNULL(ATTUALE.CONTROVALORE,0),2) AS ControvaloreAttuale,
|
|
ROUND(ISNULL(ATTUALE.PERC_AREA * @TOTControvaloreAttuale / 100 , 0),2) AS ControvaloreModello,
|
|
ATTUALE.PERC_AREA AS Totale_Percentuale,
|
|
ROUND(ISNULL(ATTUALE.CONTROVALORE,0),2) - ROUND(ISNULL(ATTUALE.PERC_AREA * @TOTControvaloreAttuale / 100 , 0),2) AS DifferenzaEuro,
|
|
CASE
|
|
WHEN @TOTControvaloreAttuale = 0 THEN - ATTUALE.PERC_AREA
|
|
ELSE ISNULL( (100 * ISNULL(ATTUALE.CONTROVALORE,0) / @TOTControvaloreAttuale - ATTUALE.PERC_AREA) , 0)
|
|
END AS DifferenzaPercentuale,
|
|
ISNULL(RISCHIOAREA.VAR_PERC_PTF,0) AS var_needarea,
|
|
CASE
|
|
WHEN RISCHIOAREA.COPERTURA IS NULL THEN 'n.c.'
|
|
WHEN RISCHIOAREA.COPERTURA = 0 THEN 'n.c.'
|
|
--------------------------------------------------------------
|
|
--INIZIO INTERVENTI OMNIA QUIII
|
|
WHEN @TOTSELFLIQ = @TOTLIQ and AREA_BISOGNO.ID_AREA = 'LIQ' THEN 'n.c.'
|
|
--FINE INTERVENTI OMNIA QUIII
|
|
--------------------------------------------------------------
|
|
ELSE NULL
|
|
END AS var_needareaString,
|
|
ISNULL(RISCHIOAREA.COPERTURA,0) AS copertura_needarea,
|
|
CASE
|
|
WHEN RISCHIOAREA.COPERTURA IS NULL THEN 'n.c.'
|
|
WHEN RISCHIOAREA.COPERTURA = 0 THEN '0,00'
|
|
ELSE NULL
|
|
END AS copertura_needareaString,
|
|
0 AS Nota, --TODO: VERIFICARE REGOLA PER LA NOTA
|
|
ISNULL(@TOTControvaloreAttuale,0) AS somma_controvalAttuale,
|
|
ISNULL(@TOTControvaloreAttuale,0) AS somma_controvalModello,
|
|
0.00 AS somma_percentualeAttuale,
|
|
0.00 AS somma_percentualeModello,
|
|
--V
|
|
CASE
|
|
WHEN @TOTCCSELF = @TOT THEN 0.00
|
|
ELSE RISCHIOTOTALE.VAR_PERC_PTF
|
|
END AS var_tot,
|
|
CASE
|
|
WHEN (@TOTCCSELF <> @TOT) AND(RISCHIOTOTALE.COPERTURA IS NULL OR RISCHIOTOTALE.COPERTURA = 0) THEN 'n.c.'
|
|
--V SOLO SELF -> VAR = 'n.c.'
|
|
WHEN (@TOTSELF = @TOT) THEN 'n.c.'
|
|
--V SOLO CC -> VAR = 0
|
|
ELSE NULL
|
|
END AS var_totString,
|
|
--V
|
|
CASE
|
|
WHEN @TOTCCSELF = @TOT THEN 0
|
|
ELSE RISCHIOTOTALE_PIR.VAR_PERC_PTF
|
|
END as var_tot_pir,
|
|
CASE
|
|
--V SOLO CC -> VAR = 0
|
|
WHEN RISCHIOTOTALE_PIR.COPERTURA IS NULL THEN 'n.c.'
|
|
WHEN RISCHIOTOTALE_PIR.COPERTURA = 0 THEN 'n.c.'
|
|
--INIZIO INTERVENTI OMNIA
|
|
-- WHEN @TOTCC = @TOT THEN NULL
|
|
WHEN @TOTCCSELF = @TOT THEN NULL
|
|
WHEN @TOTSELF = @TOT THEN 'n.c.'
|
|
--FINE INTERVENTI OMNIA
|
|
ELSE NULL
|
|
END AS var_tot_pirString,
|
|
--
|
|
ISNULL(RISCHIOTOTALE.COPERTURA,0) AS copertura_tot,
|
|
CASE
|
|
WHEN RISCHIOTOTALE.COPERTURA IS NULL THEN '0,00'
|
|
WHEN RISCHIOTOTALE.COPERTURA = 0 THEN '0,00'
|
|
ELSE NULL
|
|
END AS copertura_totString,
|
|
--V
|
|
ISNULL(RISCHIOTOTALE_PIR.COPERTURA,0) AS copertura_tot_pir,
|
|
CASE
|
|
WHEN RISCHIOTOTALE_PIR.COPERTURA IS NULL THEN 'n.c.'
|
|
WHEN RISCHIOTOTALE_PIR.COPERTURA = 0 THEN 'n.c.'
|
|
ELSE NULL
|
|
END AS copertura_tot_pirString,
|
|
--
|
|
--V
|
|
RISCHIORISFIN.VAR_PERC_PTF AS VAR_RISFIN,
|
|
CASE
|
|
WHEN RISCHIORISFIN.COPERTURA IS NULL THEN 'n.c.'
|
|
WHEN RISCHIORISFIN.COPERTURA = 0 THEN 'n.c.'
|
|
WHEN @TOTCCSELF = @TOT THEN NULL
|
|
ELSE NULL
|
|
END AS VAR_RISFINSTRING,
|
|
ISNULL(RISCHIORISFIN.COPERTURA,0) AS copertura_risfin,
|
|
CASE
|
|
WHEN RISCHIORISFIN.COPERTURA IS NULL THEN 'n.c.'
|
|
WHEN RISCHIORISFIN.COPERTURA = 0 THEN 'n.c.'
|
|
ELSE NULL
|
|
END AS copertura_risfinString,
|
|
AREA_BISOGNO.ORDINAMENTO AS ordinamento
|
|
FROM
|
|
C6MART.AREA_BISOGNO
|
|
LEFT JOIN
|
|
#PIRAMIDE_VERT ATTUALE
|
|
ON
|
|
ATTUALE.ID_AREA = AREA_BISOGNO.ID_AREA
|
|
LEFT JOIN
|
|
C6MART.RISCHIO_AGGREGATO RISCHIOAREA
|
|
ON
|
|
RISCHIOAREA.RETE = ATTUALE.RETE
|
|
AND RISCHIOAREA.COD_FISCALE = ATTUALE.COD_FISCALE
|
|
AND
|
|
RISCHIOAREA.COD_AGGREG = (
|
|
CASE WHEN ATTUALE.ID_AREA IN ('EXT','INV','PRE','RIS','LIQ')
|
|
THEN 'RISFIN|PIRAMIDE|' + ATTUALE.ID_AREA
|
|
WHEN ATTUALE.ID_AREA = 'NA'
|
|
THEN 'RISFIN|NA'
|
|
WHEN ATTUALE.ID_AREA = 'CC'
|
|
THEN 'COMPLESSIVO|BF|CC'
|
|
WHEN ATTUALE.ID_AREA = 'Self'
|
|
THEN 'COMPLESSIVO|BF|SELF'
|
|
END
|
|
)
|
|
LEFT JOIN
|
|
C6MART.RISCHIO_AGGREGATO RISCHIOTOTALE
|
|
ON
|
|
RISCHIOTOTALE.RETE = ATTUALE.RETE
|
|
AND RISCHIOTOTALE.COD_FISCALE = ATTUALE.COD_FISCALE
|
|
AND RISCHIOTOTALE.COD_AGGREG = 'COMPLESSIVO|BF'
|
|
--V
|
|
LEFT JOIN
|
|
C6MART.RISCHIO_AGGREGATO RISCHIOTOTALE_PIR
|
|
ON
|
|
RISCHIOTOTALE_PIR.RETE = ATTUALE.RETE
|
|
AND RISCHIOTOTALE_PIR.COD_FISCALE = ATTUALE.COD_FISCALE
|
|
AND RISCHIOTOTALE_PIR.COD_AGGREG = 'RISFIN|PIRAMIDE'
|
|
LEFT JOIN
|
|
C6MART.RISCHIO_AGGREGATO RISCHIORISFIN
|
|
ON
|
|
RISCHIORISFIN.RETE = ATTUALE.RETE
|
|
AND RISCHIORISFIN.COD_FISCALE = ATTUALE.COD_FISCALE
|
|
AND RISCHIORISFIN.COD_AGGREG = 'RISFIN'
|
|
--
|
|
/*WHERE
|
|
AREA_BISOGNO.ORDINAMENTO < 6*/
|
|
WHERE AREA_BISOGNO.ID_AREA <> 'self'
|
|
and AREA_BISOGNO.ID_AREA not in ('light','void') --- ***** AGGIUNTA 19/09 *****
|
|
ORDER BY AREA_BISOGNO.ORDINAMENTO
|
|
END
|
|
ELSE
|
|
SELECT *
|
|
FROM #PIRAMIDE_VERT
|
|
DROP TABLE #PIRAMIDE_VERT
|
|
END |