127 lines
5.0 KiB
Transact-SQL
127 lines
5.0 KiB
Transact-SQL
--[C6Mart].[PL_D_S180ProdottiComplessitaAlta] 'f', 'ff@9225'
|
|
CREATE procedure [C6Mart].[PL_D_S180ProdottiComplessitaAlta] --'W','BRGDNT48P60D612V'
|
|
-- 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 @TotalePatrimonio decimal(12,2)
|
|
-- acquisiamo il totale patrimonio del cliente
|
|
SELECT @TotalePatrimonio = ctv
|
|
FROM
|
|
C6Mart.vPatrimonioBFAggregato
|
|
WHERE
|
|
RETE = @Rete AND
|
|
COD_FISCALE = @CodiceFiscale
|
|
--
|
|
SELECT
|
|
1 as Ordine,
|
|
codicecontratto as CodiceContratto,
|
|
nomeprodotto as NomeProdotto,
|
|
controvalore as Controvalore,
|
|
compl_base as Complessita,
|
|
((controvalore * 100) / @TotalePatrimonio) as Peso,
|
|
@TotalePatrimonio as TotalePatrimonio,
|
|
SUM(controvalore) OVER () as SommaControvalore,
|
|
SUM((controvalore * 100) / @TotalePatrimonio) OVER () as SommaPesi
|
|
into #temp
|
|
FROM
|
|
[C6Mart].[TB_S180ProdottiComplessitaAlta]
|
|
WHERE
|
|
rete = @Rete
|
|
AND cod_fiscale LIKE
|
|
CASE WHEN @CodiceFiscale LIKE '%FF@%' THEN '%%'
|
|
ELSE @CodiceFiscale
|
|
END
|
|
AND codman =
|
|
CASE WHEN @CodiceFiscale LIKE '%FF@%' THEN SUBSTRING(@CodiceFiscale, 4, LEN(@CodiceFiscale) - 3)
|
|
ELSE ''
|
|
END
|
|
AND Compl_Base > 3
|
|
union all
|
|
SELECT
|
|
2 as Ordine,
|
|
codicecontratto as CodiceContratto,
|
|
nomeprodotto as NomeProdotto,
|
|
controvalore as Controvalore,
|
|
compl_base as Complessita,
|
|
((controvalore * 100) / @TotalePatrimonio) as Peso,
|
|
@TotalePatrimonio as TotalePatrimonio,
|
|
SUM(controvalore) OVER () as SommaControvalore,
|
|
SUM((controvalore * 100) / @TotalePatrimonio) OVER () as SommaPesi
|
|
FROM
|
|
[C6Mart].[TB_S180ProdottiComplessitaAlta]
|
|
WHERE
|
|
rete = @Rete
|
|
AND cod_fiscale LIKE
|
|
CASE WHEN @CodiceFiscale LIKE '%FF@%' THEN '%%'
|
|
ELSE @CodiceFiscale
|
|
END
|
|
AND codman =
|
|
CASE WHEN @CodiceFiscale LIKE '%FF@%' THEN SUBSTRING(@CodiceFiscale, 4, LEN(@CodiceFiscale) - 3)
|
|
ELSE ''
|
|
END
|
|
AND Compl_Base > 2
|
|
union all
|
|
SELECT
|
|
3 as Ordine,
|
|
codicecontratto as CodiceContratto,
|
|
nomeprodotto as NomeProdotto,
|
|
controvalore as Controvalore,
|
|
compl_base as Complessita,
|
|
((controvalore * 100) / @TotalePatrimonio) as Peso,
|
|
@TotalePatrimonio as TotalePatrimonio,
|
|
SUM(controvalore) OVER () as SommaControvalore,
|
|
SUM((controvalore * 100) / @TotalePatrimonio) OVER () as SommaPesi
|
|
FROM
|
|
[C6Mart].[TB_S180ProdottiComplessitaAlta]
|
|
WHERE
|
|
rete = @Rete
|
|
AND cod_fiscale LIKE
|
|
CASE WHEN @CodiceFiscale LIKE '%FF@%' THEN '%%'
|
|
ELSE @CodiceFiscale
|
|
END
|
|
AND codman =
|
|
CASE WHEN @CodiceFiscale LIKE '%FF@%' THEN SUBSTRING(@CodiceFiscale, 4, LEN(@CodiceFiscale) - 3)
|
|
ELSE ''
|
|
END
|
|
AND Compl_Base > 1
|
|
-- --20180905 Fine modifica
|
|
order by ordine,Compl_Base desc
|
|
delete from #temp where ordine=1 and SommaPesi<20 --pesi definiti da banca se la somma dei pesi di tutti prodotti a complessita alta è <20
|
|
delete from #temp where ordine=2 and SommaPesi<30 --pesi definiti da banca se la somma dei pesi di tutti prodotti a complessita alta e medio-alta è <30
|
|
delete from #temp where ordine=3 and SommaPesi<50 --pesi definiti da banca se la somma dei pesi di tutti prodotti a complessita alta e medio-alta e medio-bassa è <50
|
|
-- select * from #temp --order by ordine,Complessita
|
|
DECLARE @ordineConcatenato VARCHAR(4)
|
|
SELECT @ordineConcatenato = COALESCE(@ordineConcatenato + '', '') + CAST(ordine AS VARCHAR)
|
|
FROM (SELECT DISTINCT ordine FROM #temp) AS subquery
|
|
-- @ordineConcatenato conterrà i valori distinti concatenati della colonna 'ordine'
|
|
SELECT Ordine,CodiceContratto,NomeProdotto,Controvalore,Complessita,Peso,TotalePatrimonio,SommaControvalore,SommaPesi,@ordineConcatenato AS Ordine_Concatenato
|
|
into #temp2
|
|
FROM #temp
|
|
select t.Ordine
|
|
,t.CodiceContratto
|
|
,t.NomeProdotto
|
|
,t.Controvalore
|
|
,t.Complessita as Complessita_Numero
|
|
,case when t.Complessita=4 then 'Alta'
|
|
when t.Complessita=3 then 'Medio-alta'
|
|
when t.Complessita=2 then 'Medio-bassa'
|
|
else 'n.d.' end as Complessita
|
|
,t.Peso
|
|
,t.TotalePatrimonio
|
|
,t.SommaControvalore
|
|
,t.SommaPesi
|
|
,t.Ordine_Concatenato
|
|
,n.Descrizione
|
|
into #temp3
|
|
from #temp2 t left join [C6Mart].[TB_S180ProdottiComplessitaAlta_note] n on t.Ordine_Concatenato=n.id
|
|
DECLARE @ComplessitaConcatenata VARCHAR(4)
|
|
SELECT @ComplessitaConcatenata = COALESCE(@ComplessitaConcatenata + '', '') + CAST(complessita_numero AS VARCHAR)
|
|
FROM (SELECT DISTINCT complessita_numero FROM #temp3 ) AS subquery order by Complessita_Numero desc
|
|
SELECT t.Ordine,t.CodiceContratto,t.NomeProdotto,t.Controvalore,t.Complessita_Numero,t.Complessita,t.Peso,t.TotalePatrimonio,t.SommaControvalore,t.SommaPesi,t.Ordine_Concatenato,replace(t.Descrizione,'@@@@@',co.descrizione) as Descrizione--,@ComplessitaConcatenata as Complessita_Concatenata
|
|
FROM #temp3 t left join [C6Mart].[TB_S180ProdottiComplessitaAlta_note_complessita] co on @ComplessitaConcatenata=co.id
|
|
END |