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

64 lines
1.9 KiB
Transact-SQL

-- [C6martPeriodico].PL_MP_S145DistibuzionePerTassoRendimento 'f','00164770307'
CREATE procedure [C6MartPeriodico].[PL_MP_S145DistibuzionePerTassoRendimento]
@Rete char(1),
@CodiceFiscale varchar(16)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @sumCTV Decimal(15,3) =
(SELECT isnull(sum(BF.ctv), 0.0)
FROM c6MartPeriodico.ANAG_PRODOTTI ANAG
INNER JOIN c6MartPeriodico.patrimonio_BF BF
ON ANAG.COD_PRODOTTO = BF.COD_PRODOTTO
AND BF.rete = @Rete
AND BF.cod_fiscale = @CodiceFiscale
and not ANAG.TIPO_TASSO is null
AND ANAG.FLG_OB='S' )
SELECT
ISNULL(ANAG.TIPO_TASSO,'') as TIPOTASSO,
ISNULL(sum(BF.ctv),0) as CONTROVALORE,
CASE
when ANAG.TIPO_TASSO is null then 0
else
-- FerAcu 20240803 errore divisione per zero
--ISNULL(sum(BF.ctv) / ((SELECT sum(BF.ctv)
-- FROM c6MartPeriodico.ANAG_PRODOTTI ANAG
-- INNER JOIN c6MartPeriodico.patrimonio_BF BF
-- ON ANAG.COD_PRODOTTO = BF.COD_PRODOTTO
-- AND BF.rete = @Rete
-- AND BF.cod_fiscale = @CodiceFiscale
-- and not ANAG.TIPO_TASSO is null
-- AND ANAG.FLG_OB='S')/100) ,0)
-- visto che il default in caso di NULL è 0, usiamo 0 anche per i casi x/0
CASE WHEN @sumCTV = 0.0 Then 0.000
ELSE isNull(sum(BF.ctv), 0.000) / (@sumCTV / 100)
END
END
AS Percentage,
CASE ANAG.TIPO_TASSO
WHEN 'Fisso' THEN 153
WHEN 'Variabile' THEN 207
WHEN 'Zero Coupon' THEN 193
ELSE 235
END AS Red,
CASE ANAG.TIPO_TASSO
WHEN 'Fisso' THEN 185
WHEN 'Variabile' THEN 220
WHEN 'Zero Coupon' THEN 174
ELSE 235
END AS Green,
CASE ANAG.TIPO_TASSO
WHEN 'Fisso' THEN 166
WHEN 'Variabile' THEN 210
WHEN 'Zero Coupon' THEN 149
ELSE 236
END AS Blue
FROM c6MartPeriodico.ANAG_PRODOTTI ANAG
INNER JOIN c6MartPeriodico.patrimonio_BF BF
ON ANAG.COD_PRODOTTO = BF.COD_PRODOTTO
AND BF.rete = @Rete
AND BF.cod_fiscale = @CodiceFiscale
AND ANAG.FLG_OB='S'
GROUP BY ANAG.TIPO_TASSO
ORDER BY TIPOTASSO
END