PDC_REPORT_CreazioneDB/sql/storedCollaudo/C6Mart_PL_D2_S157ConfrontoPiramidi.sql
2025-06-06 19:02:52 +02:00

131 lines
3.9 KiB
Transact-SQL

-- Schema: C6Mart
-- Stored Procedure: PL_D2_S157ConfrontoPiramidi
-- =============================================
-- 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