-- [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