PDC_REPORT_CreazioneDB/sql/Testbes/procedure/C6MartPeriodico_PL_MP_S142DistibuzionePerRating.sql
2025-06-10 15:29:40 +02:00

92 lines
2.8 KiB
Transact-SQL

-- [C6martPeriodico].PL_MP_S142DistibuzionePerRating 'f','MSCLRT46H15A565B'
CREATE procedure [C6MartPeriodico].[PL_MP_S142DistibuzionePerRating]
@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 ANAG.FLG_OB='S' )
SELECT
RATING,
isnull(sum(T.CONTROVALORE),0) as CONTROVALORE ,
-- FerAcu 20240803 errore divisione per zero
-- isnull(sum(T.CONTROVALORE) / ((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 ANAG.FLG_OB='S' )/100),0)
-- AS Percentage,
-- 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(T.CONTROVALORE), 0.000) / (@sumCTV / 100)
END
AS Percentage,
CASE RATING
WHEN 'Da AAA a A-' THEN 93
WHEN 'Da BBB+ a BBB-' THEN 171
WHEN 'Da BB+ a B-' THEN 174
WHEN 'Da CCC+ a D' THEN 193
ELSE 235
END AS Red,
CASE RATING
WHEN 'Da AAA a A-' THEN 138
WHEN 'Da BBB+ a BBB-' THEN 196
WHEN 'Da BB+ a B-' THEN 135
WHEN 'Da CCC+ a D' THEN 174
ELSE 235
END AS Green,
CASE RATING
WHEN 'Da AAA a A-' THEN 153
WHEN 'Da BBB+ a BBB-' THEN 150
WHEN 'Da BB+ a B-' THEN 88
WHEN 'Da CCC+ a D' THEN 149
ELSE 236
END AS Blue
FROM (
SELECT
CASE ANAG.rating
WHEN 'AAA' THEN 'Da AAA a A-'
WHEN 'AA+' THEN 'Da AAA a A-'
WHEN 'AA' THEN 'Da AAA a A-'
WHEN 'AA-' THEN 'Da AAA a A-'
WHEN 'A+' THEN 'Da AAA a A-'
WHEN 'A' THEN 'Da AAA a A-'
WHEN 'A-' THEN 'Da AAA a A-'
WHEN 'BBB+' THEN 'Da BBB+ a BBB-'
WHEN 'BBB' THEN 'Da BBB+ a BBB-'
WHEN 'BBB-' THEN 'Da BBB+ a BBB-'
WHEN 'BB+' THEN 'Da BB+ a B-'
WHEN 'BB' THEN 'Da BB+ a B-'
WHEN 'BB-' THEN 'Da BB+ a B-'
WHEN 'B+' THEN 'Da BB+ a B-'
WHEN 'B' THEN 'Da BB+ a B-'
WHEN 'B-' THEN 'Da BB+ a B-'
WHEN 'CCC+' THEN 'Da CCC+ a D'
WHEN 'CCC' THEN 'Da CCC+ a D'
WHEN 'CCC-' THEN 'Da CCC+ a D'
WHEN 'CC' THEN 'Da CCC+ a D'
WHEN 'C' THEN 'Da CCC+ a D'
WHEN 'D' THEN 'Da CCC+ a D'
ELSE 'Non classificato'
END AS RATING,
isnull(sum(BF.ctv),0) as CONTROVALORE
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.rating
) T
GROUP BY T.RATING
ORDER BY T.RATING
END