-- Schema: C6Mart -- Stored Procedure: zzzzPL_D_S157ConfrontoPiramidi -- Stored procedure -- ============================================= -- Author: Paolo Giovanetti -- Create date: 11/11/2008 -- Description: -- ============================================= -- [C6Mart].[PL_D_S157ConfrontoPiramidi] 'S','CSLMCR54P48H501U' -- CHIEDERE A FABRIZIO, case @TOTControvaloreModello when 0 .... CREATE procedure [C6Mart].[zzzzPL_D_S157ConfrontoPiramidi] -- Add the parameters for the stored procedure here @Rete char(1), @CodiceFiscale varchar(16) AS BEGIN -- DECLARE @minGradoCoperura AS INT -- SET @minGradoCoperura = CAST(dbo.getParametro('MINGRADOCOPERTURA') AS INT) SELECT PIRAMIDE_MOD.RETE, PIRAMIDE_MOD.COD_FISCALE, PIRAMIDE_MOD.ID_AREA, PIRAMIDE_MOD.PERC_AREA, PIRAMIDE_VERT.CTV_AREA AS CONTROVALORE INTO #PIRAMIDE_VERT FROM (SELECT PIRAMIDE_MOD.RETE, PIRAMIDE_MOD.COD_FISCALE, PIRAMIDE_MOD.ID_AREA, SUM(PIRAMIDE_MOD.PERC_AREA) AS PERC_AREA FROM C6MART.PIRAMIDE_MOD WHERE PIRAMIDE_MOD.ID_AREA IN ('RIS','EXT','LIQ','PRE','NA', 'CC', 'INV' ) AND PIRAMIDE_MOD.RETE = @Rete AND PIRAMIDE_MOD.COD_FISCALE = @CodiceFiscale GROUP BY PIRAMIDE_MOD.RETE, PIRAMIDE_MOD.COD_FISCALE, PIRAMIDE_MOD.ID_AREA) AS 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, 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) ) PIRAMIDE_VERT ON PIRAMIDE_VERT.ID_AREA = PIRAMIDE_MOD.ID_AREA WHERE --modificata atringali -- (PIRAMIDE_MOD.ID_AREA IN ('RIS','EXT','LIQ','PRE','NA') (PIRAMIDE_MOD.ID_AREA IN ('RIS','EXT','LIQ','PRE','NA', 'CC') OR ( PIRAMIDE_MOD.ID_AREA = 'INV' -- AND PIRAMIDE_MOD.NOME_PROGETTO IS NULL )) AND PIRAMIDE_MOD.RETE = @Rete AND PIRAMIDE_MOD.COD_FISCALE = @CodiceFiscale 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') --V DECLARE @TOTCC DECIMAL (20,2) SELECT @TOTCC = ISNULL(CONTROVALORE,0) FROM #PIRAMIDE_VERT ATTUALE WHERE ATTUALE.RETE = @Rete AND ATTUALE.COD_FISCALE = @CodiceFiscale AND ID_AREA = 'Cc' --V -- DECLARE @TOTNA DECIMAL (20,2) -- SELECT @TOTCC = ISNULL(CONTROVALORE,0) -- FROM #PIRAMIDE_VERT ATTUALE -- WHERE ATTUALE.RETE = @Rete -- AND ATTUALE.COD_FISCALE = @CodiceFiscale -- AND ID_AREA = 'Na' --V DECLARE @TOT DECIMAL (20,2) SELECT @TOT = SUM(ISNULL(CONTROVALORE,0)) FROM #PIRAMIDE_VERT ATTUALE WHERE ATTUALE.RETE = @Rete AND ATTUALE.COD_FISCALE = @CodiceFiscale 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, -- V D S CASE WHEN @TOTControvaloreAttuale = 0 THEN - ATTUALE.PERC_AREA