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

133 lines
5.3 KiB
Transact-SQL

--[c6MartPeriodico].[PL_D_S180ProdottiComplessitaAlta] 'f', 'ff@9225'
CREATE procedure [C6MartPeriodico].[PL_D_S180ProdottiComplessitaAlta] --'F','LPPLBR69L11L833P'
-- 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
c6MartPeriodico.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,
percentuale_CTV as Peso,
@TotalePatrimonio as TotalePatrimonio,
SUM(controvalore) OVER () as SommaControvalore,
-- SUM((controvalore * 100) / @TotalePatrimonio) OVER () as SommaPesi
SUM(Percentuale_CTV) OVER () as SommaPesi
into #temp
FROM
[c6MartPeriodico].[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,
percentuale_CTV as Peso,
@TotalePatrimonio as TotalePatrimonio,
SUM(controvalore) OVER () as SommaControvalore,
-- SUM((controvalore * 100) / @TotalePatrimonio) OVER () as SommaPesi
SUM(Percentuale_CTV) OVER () as SommaPesi
FROM
[c6MartPeriodico].[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,
percentuale_CTV as Peso,
@TotalePatrimonio as TotalePatrimonio,
SUM(controvalore) OVER () as SommaControvalore,
-- SUM((controvalore * 100) / @TotalePatrimonio) OVER () as SommaPesi
SUM(Percentuale_CTV) OVER () as SommaPesi
FROM
[c6MartPeriodico].[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 [C6MartPeriodico].[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 [C6MartPeriodico].[TB_S180ProdottiComplessitaAlta_note_complessita] co on @ComplessitaConcatenata=co.id
END