-- ============================================= -- Author: Paolo Giovanetti -- Create date: 11/11/2008 -- 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