127 lines
3.9 KiB
Transact-SQL
127 lines
3.9 KiB
Transact-SQL
-- Schema: C6Mart
|
|
-- Stored Procedure: zzzzPL_D_S157ConfrontoPiramidi
|
|
|
|
|
|
-- Stored procedure
|
|
|
|
|
|
|
|
-- =============================================
|
|
-- Author: Paolo Giovanetti
|
|
-- Create date: 11/11/2008
|
|
-- Description: <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
|