PDC_REPORT_CreazioneDB/sql/storedProduzione/C6MartPeriodico_PL_S82BisDatiSintetici.sql
2025-06-06 19:02:52 +02:00

103 lines
4.0 KiB
Transact-SQL

-- Stored procedure
-- =============================================
-- Author: Paolo Giovanetti
-- Create date: 15 gennaio 2009
-- Description: vista ORACLE S82BIS_DATI_SINTET_RIS_E_INV tradotta su SQLSERVER.
-- Punto di partenza per lo sviluppo futuro.
-- =============================================
-- [C6MartPeriodico].[PL_S82BisDatiSintetici] 'F','DNGMRA56E66D542Z'
CREATE procedure [C6MartPeriodico].[PL_S82BisDatiSintetici]
-- Add the parameters for the stored procedure here
@Rete char(1),
@CodiceFiscale varchar(16)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
/*DECLARE @TOTRischio DECIMAL(20,2)
SELECT
@TOTRischio = SUM(ISNULL(RISCHIOAREA.VAR_PERC_PTF,0) * PATRAREA.CTV)
FROM
C6MartPeriodico.vPatrimonioBFAggregatoPerArea AS PATRAREA INNER JOIN
C6MartPeriodico.RISCHIO_AGGREGATO AS RISCHIOAREA ON
PATRAREA.RETE = RISCHIOAREA.RETE AND
PATRAREA.COD_FISCALE = RISCHIOAREA.COD_FISCALE
WHERE
PATRAREA.ID_AREA IN ('RIS','EXT','LIQ','PRE','INV') AND
PATRAREA.RETE = @Rete AND
PATRAREA.COD_FISCALE = @CodiceFiscale*/
SELECT DISTINCT
BF.ORDINAMENTO_PROGETTO,
'Inv' AS need_area,
ltrim(rtrim(ISNULL(PIRMOD.NOME_PROGETTO,BF.NOME_PROGETTO))) AS NOME_PROGETTO,
ISNULL(RA.VAR_PERC_PTF,0) AS var_needarea,
CASE
WHEN RA.COPERTURA IS NULL THEN 'n.c.'
WHEN RA.COPERTURA = 0 THEN 'n.c.'
ELSE NULL
END AS var_needareaString,
ISNULL(RA.COPERTURA,0) AS copertura_needarea,
CASE
WHEN RA.COPERTURA IS NULL THEN 'n.c.'
WHEN RA.COPERTURA = 0 THEN 'n.c.'
ELSE NULL
END AS copertura_needareaString,
PIRMOD.ORIZZ_TEMP AS orizzonte_Pianificato,
--C6MartPeriodico.getDescFromDate(DATEDIFF(m,(DATEADD(yy,PIRMOD.ORIZZ_TEMP_NUM,PIRMOD.DATA_PIANIF)) ,GETDATE()) + 1) AS durataResidua,
--DATEDIFF(m,DATEADD(yy,PIRMOD.ORIZZ_TEMP_NUM, PIRMOD.DATA_PIANIF) ,GETDATE()) + 1 AS durataResidua,
C6MartPeriodico.getDescFromDate(DATEDIFF(m,C6MartPeriodico.getTrimestre(GETDATE(),0),(DATEADD(yy,PIRMOD.ORIZZ_TEMP_NUM,PIRMOD.DATA_PIANIF)) )) AS durataResidua,
/*V Calcolato a livello di codice
CASE
WHEN BFAggr.CTV = 0 THEN 0
ELSE SUM(BF.CTV) OVER (PARTITION BY BF.RETE, BF.COD_FISCALE, BF.NOME_PROGETTO) / BFAggr.CTV * 100
END AS pesoPerc,*/
SUM(BF.CTV) OVER (PARTITION BY BF.RETE, BF.COD_FISCALE, BF.NOME_PROGETTO, bf.ordinamento_progetto) AS ControvaloreAttuale
/*V Calcolato a livello di codice
CASE
WHEN @TOTRischio = 0 THEN 0
ELSE ISNULL(RA.VAR_PERC_PTF,0) * SUM(BF.CTV) OVER (PARTITION BY BF.RETE, BF.COD_FISCALE, BF.NOME_PROGETTO) / @TOTRischio * 100
END AS rischioRelativo*/
into #temp
FROM
C6MartPeriodico.PATRIMONIO_BF AS BF
LEFT OUTER JOIN C6MartPeriodico.RISCHIO_AGGREGATO AS RA
ON BF.RETE = RA.RETE
AND BF.COD_FISCALE = RA.COD_FISCALE
--V AND RA.COD_AGGREG = 'PIRAMIDE|Inv'
AND RA.COD_AGGREG = 'RISFIN|PIRAMIDE|Inv|'+ BF.NOME_PROGETTO + '|' + cast(bf.ordinamento_progetto as varchar)
--
INNER JOIN C6MartPeriodico.PIRAMIDE_MOD AS PIRMOD
ON BF.RETE = PIRMOD.RETE
AND BF.COD_FISCALE = PIRMOD.COD_FISCALE
--AND BF.NOME_PROGETTO = PIRMOD.NOME_PROGETTO
AND BF.ORDINAMENTO_PROGETTO = PIRMOD.ORDINAMENTO_PROGETTO
AND PIRMOD.ID_AREA = 'Inv'
INNER JOIN C6MartPeriodico.vPatrimonioBFAggregato AS BFAggr
ON BF.RETE = BFAggr.RETE
AND BF.COD_FISCALE = BFAggr.COD_FISCALE
LEFT OUTER JOIN C6MARTPERIODICO.MONITORAGGIO_ATTUALE AS MONIT
ON BF.RETE = MONIT.RETE
AND BF.COD_FISCALE = MONIT.COD_FISCALE
AND BF.ID_AREA = MONIT.ID_AREA
AND BF.NOME_PROGETTO = MONIT.NOME_PROGETTO
AND BF.ORDINAMENTO_PROGETTO = MONIT.ORDINAMENTO_PROGETTO
WHERE 1=1
AND BF.ID_AREA = 'Inv'
AND BF.RETE = @Rete
AND BF.COD_FISCALE = @CodiceFiscale
--AND BF.ORDINAMENTO_PROGETTO=1521667
if exists (select 1 from #temp)
select * from #temp
else
select
0 as ORDINAMENTO_PROGETTO
,'' as need_area
,NULL as NOME_PROGETTO
,0 as var_needarea
,'n.c.' as var_needareaString
,'n.c.' as copertura_needareaString
,'' as orizzonte_Pianificato
,0 as durataResidua
,0 as ControvaloreAttuale
END