--select * --from c6martperiodico.patrimonio_bf --where cod_fiscale = 'GNGFRZ63H17D810C' --and id_area = 'Liq' -- --begin tran commit --update --c6martperiodico.patrimonio_bf --set ordinamento_progetto = 527950 --where cod_fiscale = 'GNGFRZ63H17D810C' --and id_area = 'Liq' --and ordinamento_progetto is null -- Stored procedure -- ============================================= -- Author: Paolo Giovanetti -- Alessandro Tringali -- Create date: 15 gennaio 2009 -- 19/09/2009 -- Description: riporta il valore complessivo dei prodotti attualmente destinati all'area -- di bisogno progetto (controvalore attuale) ed il relativo valore di rischio (VaR attuale) -- ============================================= -- [C6MartPeriodico].[PL_S86PatrimonioFinanziarioMAssetClass] 'S','GNGFRZ63H17D810C' CREATE procedure [C6MartPeriodico].[PL_S86PatrimonioFinanziarioMAssetClass] -- 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; SELECT VALORIASSET.ID_AREA AS Need_Area, VALORIASSET.NOME_PROGETTO, VALORIASSET.ord_progetto, VALORIASSET.ID_ASSETCLASS AS AssetClassId, ASSETCLASS.DESCRIZIONE AS AssetClassName, --ROUND(VALORIASSET.CONTROVALORE, 2) AS Controvalore, CAST(VALORIASSET.CONTROVALORE AS DECIMAL(15,2)) AS Controvalore, ROUND(VALORIASSET.CONTROVALORE / SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY VALORIASSET.ID_AREA, VALORIASSET.NOME_PROGETTO) * 100, 2) AS Percentuale FROM ( SELECT VAL.RETE, VAL.COD_FISCALE, VAL.ID_AREA, VAL.NOME_PROGETTO, val.ord_progetto, SUM(CONTROVALORE) AS CONTROVALORE, ID_ASSETCLASS FROM (--V Escludo gli ASU2 che essendo skandia vanno gestiti in modo particolare SELECT PATR_BF.RETE, PATR_BF.COD_FISCALE, CASE WHEN PATR_BF.ID_AREA IN ('Pre1', 'Pre2') THEN 'Pre' ELSE PATR_BF.ID_AREA END AS ID_AREA, ltrim(rtrim(PATR_BF.NOME_PROGETTO)) NOME_PROGETTO , patr_bf.ordinamento_progetto ord_progetto, (PATR_BF.CTV * ISNULL(ASSETPERC.PERC, 1)) AS CONTROVALORE, ISNULL(ASSETPERC.ID_ASSETCLASS, 'AL') AS ID_ASSETCLASS FROM C6MartPeriodico.PATRIMONIO_BF AS PATR_BF INNER JOIN C6MartPeriodico.ASSET_PERC AS ASSETPERC ON PATR_BF.COD_PRODOTTO = ASSETPERC.COD_PRODOTTO WHERE PATR_BF.ID_AREA NOT IN ('Cc', 'Na','Pre1','Pre2','Pre') AND ASSETPERC.LIVELLO = 1 --AND PATR_BF.TIPO_PRODOTTO NOT IN ('ASUL','CC') AND PATR_BF.TIPO_PRODOTTO NOT IN ('ASUL','ASU2') AND PATR_BF.COD_FISCALE=@CodiceFiscale AND PATR_BF.RETE= @Rete -- UNION ALL ---DETTAGLIO ASUL SENZA GLI SKANDIA SELECT PATR_BF.RETE, PATR_BF.COD_FISCALE, CASE WHEN PATR_BF.ID_AREA IN ('Pre1', 'Pre2') THEN 'Pre' ELSE PATR_BF.ID_AREA END AS ID_AREA, PATR_BF.NOME_PROGETTO, patr_bf.ordinamento_progetto ord_progetto, ASUL.CTV*ASSETPERC.PERC as Controvalore, ASSETPERC.ID_ASSETCLASS FROM C6MartPeriodico.DETTAGLIO_ASUL ASUL INNER JOIN C6MartPeriodico.ASSET_PERC ASSETPERC ON ASSETPERC.COD_PRODOTTO = rtrim(ASUL.COD_PRODOTTO) AND ASUL.COD_ISIN_SOTT = '' AND ASSETPERC.LIVELLO = 1 INNER JOIN C6MartPeriodico.PATRIMONIO_BF PATR_BF ON ASUL.COD_FISCALE=PATR_BF.COD_fISCALE AND ASUL.RETE=PATR_BF.RETE AND ASUL.id_contratto=PATR_BF.ID_CONTRATTO WHERE ASUL.RETE = @Rete AND ASUL.COD_FISCALE = @CodiceFiscale AND PATR_BF.ID_AREA NOT IN ('Pre1','Pre2','Pre') UNION ALL --DETTAGLIO ASUL SKANDIA SELECT ASUL.RETE, ASUL.COD_FISCALE, CASE WHEN ASUL.ID_AREA IN ('Pre1', 'Pre2') THEN 'Pre' ELSE ASUL.ID_AREA END AS ID_AREA, ASUL.NOME_PROGETTO, asul.ordinamento_progetto ord_progetto, ASUL.CTV*ASSETPERC.PERC as Controvalore, ASSETPERC.ID_ASSETCLASS FROM C6MartPeriodico.PATRIMONIO_BF ASUL INNER JOIN C6MartPeriodico.ASSET_PERC ASSETPERC ON ASSETPERC.COD_ISIN = rtrim(ASUL.ISIN) AND ASSETPERC.COD_MAF = rtrim(ASUL.COD_MAF) AND ASSETPERC.COD_INTERNO = rtrim(ASUL.COD_INTERNO) AND rtrim(ASSETPERC.COD_SOTTOPRODOTTO) = ASUL.COD_SOTTOPRODOTTO AND rtrim(ASSETPERC.COD_PRODOTTO) = ASUL.COD_PRODOTTO AND ASSETPERC.LIVELLO = 1 -- INNER JOIN C6MartPeriodico.PATRIMONIO_BF PATR_BF -- ON ASUL.COD_FISCALE=PATR_BF.COD_fISCALE -- AND ASUL.RETE=PATR_BF.RETE -- AND ASUL.ID_CONTRATTO=PATR_BF.ID_CONTRATTO WHERE ASUL.RETE =@Rete AND ASUL.COD_FISCALE = @CodiceFiscale --V gli SKANDIA sono a livello di patrimonio_bf con tipo prod ASU2 AND ASUL.tipo_Prodotto = 'ASU2' AND ASUL.ID_AREA NOT IN ('Pre1','Pre2','Pre') ) val where Controvalore >0 GROUP BY VAL.RETE, val.COD_FISCALE, VAL.ID_AREA, VAL.NOME_PROGETTO, val.ord_progetto, VAL.ID_ASSETCLASS UNION ALL /* nuovo */ SELECT VAL.RETE, VAL.COD_FISCALE, VAL.ID_AREA, VAL.NOME_PROGETTO, MAX(val.ord_progetto), SUM(CONTROVALORE) AS CONTROVALORE, ID_ASSETCLASS FROM (--V Escludo gli ASU2 che essendo skandia vanno gestiti in modo particolare SELECT PATR_BF.RETE, PATR_BF.COD_FISCALE, CASE WHEN PATR_BF.ID_AREA IN ('Pre1', 'Pre2') THEN 'Pre' ELSE PATR_BF.ID_AREA END AS ID_AREA, ltrim(rtrim(PATR_BF.NOME_PROGETTO)) NOME_PROGETTO , patr_bf.ordinamento_progetto ord_progetto, (PATR_BF.CTV * ISNULL(ASSETPERC.PERC, 1)) AS CONTROVALORE, ISNULL(ASSETPERC.ID_ASSETCLASS, 'AL') AS ID_ASSETCLASS FROM C6MartPeriodico.PATRIMONIO_BF AS PATR_BF INNER JOIN C6MartPeriodico.ASSET_PERC AS ASSETPERC ON PATR_BF.COD_PRODOTTO = ASSETPERC.COD_PRODOTTO WHERE PATR_BF.ID_AREA IN ('Pre1','Pre2','Pre') AND ASSETPERC.LIVELLO = 1 --AND PATR_BF.TIPO_PRODOTTO NOT IN ('ASUL','CC') AND PATR_BF.TIPO_PRODOTTO NOT IN ('ASUL','ASU2') AND PATR_BF.COD_FISCALE=@CodiceFiscale AND PATR_BF.RETE= @Rete -- UNION ALL ---DETTAGLIO ASUL SENZA GLI SKANDIA SELECT PATR_BF.RETE, PATR_BF.COD_FISCALE, CASE WHEN PATR_BF.ID_AREA IN ('Pre1', 'Pre2') THEN 'Pre' ELSE PATR_BF.ID_AREA END AS ID_AREA, PATR_BF.NOME_PROGETTO, patr_bf.ordinamento_progetto ord_progetto, ASUL.CTV*ASSETPERC.PERC as Controvalore, ASSETPERC.ID_ASSETCLASS FROM C6MartPeriodico.DETTAGLIO_ASUL ASUL INNER JOIN C6MartPeriodico.ASSET_PERC ASSETPERC ON ASSETPERC.COD_PRODOTTO = rtrim(ASUL.COD_PRODOTTO) AND ASUL.COD_ISIN_SOTT = '' AND ASSETPERC.LIVELLO = 1 INNER JOIN C6MartPeriodico.PATRIMONIO_BF PATR_BF ON ASUL.COD_FISCALE=PATR_BF.COD_fISCALE AND ASUL.RETE=PATR_BF.RETE AND ASUL.id_contratto=PATR_BF.ID_CONTRATTO WHERE ASUL.RETE = @Rete AND ASUL.COD_FISCALE = @CodiceFiscale AND PATR_BF.ID_AREA IN ('Pre1','Pre2','Pre') UNION ALL --DETTAGLIO ASUL SKANDIA SELECT ASUL.RETE, ASUL.COD_FISCALE, CASE WHEN ASUL.ID_AREA IN ('Pre1', 'Pre2') THEN 'Pre' ELSE ASUL.ID_AREA END AS ID_AREA, ASUL.NOME_PROGETTO, asul.ordinamento_progetto ord_progetto, ASUL.CTV*ASSETPERC.PERC as Controvalore, ASSETPERC.ID_ASSETCLASS FROM C6MartPeriodico.PATRIMONIO_BF ASUL INNER JOIN C6MartPeriodico.ASSET_PERC ASSETPERC ON ASSETPERC.COD_ISIN = rtrim(ASUL.ISIN) AND ASSETPERC.COD_MAF = rtrim(ASUL.COD_MAF) AND ASSETPERC.COD_INTERNO = rtrim(ASUL.COD_INTERNO) AND rtrim(ASSETPERC.COD_SOTTOPRODOTTO) = ASUL.COD_SOTTOPRODOTTO AND rtrim(ASSETPERC.COD_PRODOTTO) = ASUL.COD_PRODOTTO AND ASSETPERC.LIVELLO = 1 -- INNER JOIN C6MartPeriodico.PATRIMONIO_BF PATR_BF -- ON ASUL.COD_FISCALE=PATR_BF.COD_fISCALE -- AND ASUL.RETE=PATR_BF.RETE -- AND ASUL.ID_CONTRATTO=PATR_BF.ID_CONTRATTO WHERE ASUL.RETE =@Rete AND ASUL.COD_FISCALE = @CodiceFiscale --V gli SKANDIA sono a livello di patrimonio_bf con tipo prod ASU2 AND ASUL.tipo_Prodotto = 'ASU2' AND ASUL.ID_AREA IN ('Pre1','Pre2','Pre') ) val where Controvalore >0 GROUP BY VAL.RETE, val.COD_FISCALE, VAL.ID_AREA, VAL.NOME_PROGETTO, VAL.ID_ASSETCLASS /**/ ) VALORIASSET INNER JOIN C6MartPeriodico.ASSETCLASS AS ASSETCLASS ON ASSETCLASS.ID_ASSETCLASS = VALORIASSET.ID_ASSETCLASS WHERE VALORIASSET.RETE =@Rete AND VALORIASSET.COD_FISCALE = @CodiceFiscale ORDER BY ASSETCLASS.ORDINAMENTO -- -- SELECT -- VALORIASSET.ID_AREA AS Need_Area, -- VALORIASSET.NOME_PROGETTO, -- VALORIASSET.ID_ASSETCLASS AS AssetClassId, -- ASSETCLASS.DESCRIZIONE AS AssetClassName, -- --ROUND(VALORIASSET.CONTROVALORE, 2) AS Controvalore, -- CAST(VALORIASSET.CONTROVALORE AS DECIMAL(15,2)) AS Controvalore, -- ROUND(VALORIASSET.CONTROVALORE / SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY VALORIASSET.ID_AREA, VALORIASSET.NOME_PROGETTO) * 100, 2) AS Percentuale -- FROM ( -- SELECT -- PATR_BF.RETE, -- PATR_BF.COD_FISCALE, -- CASE -- WHEN PATR_BF.ID_AREA IN ('Pre1', 'Pre2') THEN 'Pre' -- ELSE PATR_BF.ID_AREA -- END AS ID_AREA, -- PATR_BF.NOME_PROGETTO, -- SUM(PATR_BF.CTV * ISNULL(ASSETPERC.PERC, 1)) AS CONTROVALORE, -- ISNULL(ASSETPERC.ID_ASSETCLASS, 'AL') AS ID_ASSETCLASS -- FROM C6MartPeriodico.PATRIMONIO_BF AS PATR_BF -- INNER JOIN C6MartPeriodico.ASSET_PERC AS ASSETPERC -- ON PATR_BF.COD_PRODOTTO = ASSETPERC.COD_PRODOTTO -- WHERE -- PATR_BF.ID_AREA NOT IN ('Cc', 'Na') -- AND ASSETPERC.LIVELLO = 1 -- GROUP BY -- PATR_BF.RETE, -- PATR_BF.COD_FISCALE, -- PATR_BF.ID_AREA, -- PATR_BF.NOME_PROGETTO, -- ASSETPERC.ID_ASSETCLASS -- ) VALORIASSET -- INNER JOIN C6MartPeriodico.ASSETCLASS AS ASSETCLASS -- ON ASSETCLASS.ID_ASSETCLASS = VALORIASSET.ID_ASSETCLASS -- WHERE -- VALORIASSET.RETE = @Rete -- AND VALORIASSET.COD_FISCALE = @CodiceFiscale -- ORDER BY -- ASSETCLASS.ORDINAMENTO /*SELECT ID_AREA AS NEED_AREA, NOME_PROGETTO, VALORIASSET.ID_ASSETCLASS AS AssetClassId, ASSETCLASS.DESCRIZIONE AS AssetClassName, SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY VALORIASSET.ID_ASSETCLASS, ID_AREA, NOME_PROGETTO) AS Controvalore, /*( SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY VALORIASSET.ID_ASSETCLASS, ID_AREA, NOME_PROGETTO) / SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY 'TOTALE') ) * 100 AS Percentuale,*/ VALORIASSET.CONTROVALORE / SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY ID_AREA, NOME_PROGETTO) * 100 AS Percentuale, --SUM(VALORIASSET.CONTROVALORE) OVER (PARTITION BY 'TOTALE') AS PatrimonioFinanziarioCTV, ASSETCLASS.ORDINAMENTO AS Ordinamento FROM ( --PRODOTTI TERZI A CATALOGO SELECT LEFT(PATRBF.ID_AREA,3) AS ID_AREA, PATRBF.NOME_PROGETTO, ISNULL(ASSETPERC.ID_ASSETCLASS,'AL') AS ID_ASSETCLASS, PATRBF.CTV * ISNULL(ASSETPERC.PERC,1) AS Controvalore FROM --C6MartPeriodico.PATRIMONIO_TERZI PATRTERZI C6MartPeriodico.PATRIMONIO_BF PATRBF LEFT JOIN C6MartPeriodico.ASSET_PERC ASSETPERC ON PATRBF.COD_PRODOTTO = ASSETPERC.COD_PRODOTTO AND ASSETPERC.LIVELLO = 1 WHERE 1 = 1 --AND PATRTERZI.COD_PRODOTTO <> 'PRODOTTO NON IN CATALOGO' AND PATRBF.RETE = @Rete AND PATRBF.COD_FISCALE = @CodiceFiscale AND PATRBF.ID_AREA NOT IN ('Cc', 'Na') /*UNION ALL --PRODOTTI TERZI NON A CATALOGO SELECT ISNULL(ASSETPERC.ID_ASSETCLASS,'AL') AS ID_ASSETCLASS, PATRTERZI.CTV*ISNULL(ASSETPERC.PERC,1) AS Controvalore FROM C6MartPeriodico.PATRIMONIO_TERZI PATRTERZI LEFT JOIN C6MartPeriodico.ASSET_PERC_TERZI ASSETPERC ON PATRTERZI.COD_PRODOTTO_TERZI = ASSETPERC.COD_PRODOTTO_TERZI AND ASSETPERC.LIVELLO = 1 WHERE 1 = 1 AND PATRTERZI.COD_PRODOTTO = 'PRODOTTO NON IN CATALOGO' AND PATRTERZI.RETE = @Rete AND PATRTERZI.COD_FISCALE = @CodiceFiscale*/ ) VALORIASSET INNER JOIN C6MartPeriodico.ASSETCLASS ASSETCLASS ON ASSETCLASS.ID_ASSETCLASS = VALORIASSET.ID_ASSETCLASS ORDER BY ASSETCLASS.ORDINAMENTO*/ END