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