-- Schema: C6Mart -- Stored Procedure: PL_D_S180ProdottiComplessitaAlta --[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 O