-- ============================================= -- Author: Caruso Fabrizio -- Create date: 17/09/2014 -- Description: -- Individuazione dei Clienti che presentano una o più posizioni duplicate -- nel proprio patrimonio finanziario -- Impostazione Codice TIPO CONTROLLO per il controllo specifico -- ( per riferimenti al tipo controllo verificare tabella "tb_tipocontrollo" ) -- ============================================= -- ATTENZIONE !!! -- La SP che carica la Patrimonio BF effettua un controllo dopo una prima elaborazione e scarta -- i record "duplicati". Riporto la query di INPUT per poter effetturare il test e lo scarto CREATE procedure [C6MartPeriodico].[SP_DQ_PosizioniDuplicate] @idFaseElaborazione int AS BEGIN Declare @idTipoControllo int set @idTipoControllo=4 -- Selezione in Tabella Temporanea Verifica_CAMPIONE dei record "doppi" SELECT -- PER DIVERSI DA CC ************************ SPB.RETE AS RETE, SPB.CODFIS AS COD_FISCALE, SPB.POSITIONID AS POSITIONID, SUBSTRING(SPB.POSITIONID,1,57) AS COD_PRODOTTO, SPB.CODCONF AS ID_CONTRATTO, CASE WHEN ISDATE(SPB.DTSOTTOS) = 0 THEN NULL ELSE CAST(CAST(SPB.DTSOTTOS AS VARCHAR(8)) AS DATETIME) END AS DATA_SOTTOSCRIZIONE, null AS COD_STATO, SPB.NUMPOL AS NUM_POLIZZA, SPB.MAF AS COD_MAF, SPB.CODINT AS COD_INTERNO, SPB.SUBPROD AS COD_SOTTOPRODOTTO, SPB.TIPPROD AS TIPO_PRODOTTO, CASE WHEN CON.area = 'Inv' AND CON.tipoProgetto = 0 THEN 'Prodotti non associati a progetti' ELSE LTRIM(RTRIM(CON.nomeProgetto)) END AS NOME_PROGETTO, case when isnull(CON.tipoProgetto, '') = '' then 'Default' when CON.tipoProgetto = 0 then 'Default' else 'ProgettoInvestimento' end as TIPO_PROGETTO, CON.area AS ID_AREA, CASE WHEN ISDATE(SPB.DTRIFE) = 0 THEN NULL ELSE CAST(CAST(SPB.DTRIFE AS VARCHAR(8)) AS DATETIME) END AS DATA_OPERAZIONE, NULL AS DATA_VALUTA, NULL AS DATA_REGOLAMENTO, SPB.QUOTE AS QUANTITA, NULL AS PREZZO, SPB.CTV AS CTV, SPB.VALORE AS CTV_NOMINALE, CASE WHEN (SPB.TIPPROD = 'GE' OR SPB.TIPPROD = 'GES') AND SPB.DTSOTTOS < 20070101 THEN NULL WHEN SPB.TIPPROD IN ( 'ASVI','ASU1') THEN NULL WHEN SPB.TIPPROD = 'ASUL' AND SPB.CODINT NOT IN ('18','19','35','PR','PX') THEN NULL WHEN SPB.CVN = 0 THEN NULL ELSE SPB.CVN END AS VERSATO_NETTO, SPB.PARTVIA AS PARTVIA_DISINV, CASE WHEN ISDATE(SPB.PARTVIAAL) = 0 THEN NULL ELSE CAST(CAST(SPB.PARTVIAAL AS VARCHAR(8)) AS DATETIME) END AS DATA_PARTVIA_DISINV, NULL AS PARTVIA_INV, CASE WHEN (SPB.TIPPROD = 'GE' OR SPB.TIPPROD = 'GES') AND SPB.DTSOTTOS < 20070101 THEN NULL WHEN SPB.TIPPROD IN ( 'ASVI','ASU1') THEN NULL WHEN SPB.TIPPROD = 'ASUL' AND SPB.CODINT NOT IN ('18','19','35','PR','PX') THEN NULL ELSE SPB.RENDINIZ END AS REND_SOTTOSCRIZIONE, null AS REND_TRIMESTRE, CASE WHEN (SPB.TIPPROD = 'GE' OR SPB.TIPPROD = 'GES') AND SPB.DTSOTTOS < 20070101 THEN NULL WHEN SPB.TIPPROD IN ( 'ASVI','ASU1') THEN NULL WHEN SPB.TIPPROD = 'ASUL' AND SPB.CODINT NOT IN ('18','19','35','PR','PX') THEN NULL ELSE SPB.RENDANNO END AS REND_ANNO, CON.StrType, CON.Complessita AS COMPLEX, CON.DescrizioneEmittente AS EMITTENTE, SPB.ISIN, CON.chiaveClientePB, --nuovo 0 AS REND_NON_RAPPR, CON.ChiaveProgetto AS ORDINAMENTO_PROGETTO, CASE WHEN CON.orizzonteTemporale = 0 THEN NULL ELSE CON.orizzonteTemporale END AS ORIZZ_TEMP_NUM, CASE WHEN ISNULL(ORIZZONTETEMPORALE, 0) = 0 THEN NULL ELSE LTRIM(RTRIM(ORIZZONTETEMPORALE)) + ' anni' END AS ORIZZONTETEMPORALE, CON.CHIAVEPROGETTO AS CHIAVEPROGETTO -- fine nuovo --*************************************** INTO #Verifica_CAMPIONE --*************************************** FROM C6StagingPeriodico.SPB_CONTR_SINTESI SPB INNER JOIN C6StagingPeriodico.RP_Consulenza CON ON CON.rete = SPB.RETE AND CON.cod_fiscale = SPB.CODFIS AND CON.Position_id = SPB.positionid LEFT JOIN C6StagingPeriodico.RP_ChiaviMonitoraggio CM ON CON.chiaveprogetto = CM.chiaveProgetto AND CM.stato = 1 WHERE SPB.POSITIONID IS NOT NULL and CON.area <> 'CC' and SPB.TIPPROD <> 'CC' --***INIZIO INTERVENTI OMNIA*** and SPB.Isin <> 'EURO00000009' and CON.area <> 'SELF' --FINE INTERVENTI OMNIA*** UNION ALL SELECT -- *** PER UGUALI DA CC ************************ SPB.RETE AS RETE, SPB.CODFIS AS COD_FISCALE, SPB.POSITIONID AS POSITIONID, SUBSTRING(SPB.POSITIONID,1,57) AS COD_PRODOTTO, SPB.CODCONF AS ID_CONTRATTO, CASE WHEN ISDATE(SPB.DTSOTTOS) = 0 THEN NULL ELSE CAST(CAST(SPB.DTSOTTOS AS VARCHAR(8)) AS DATETIME) END AS DATA_SOTTOSCRIZIONE, NULL AS COD_STATO, SPB.NUMPOL AS NUM_POLIZZA, SPB.MAF AS COD_MAF, SPB.CODINT AS COD_INTERNO, SPB.SUBPROD AS COD_SOTTOPRODOTTO, SPB.TIPPROD AS TIPO_PRODOTTO, CON.NOMEPROGETTO AS NOME_PROGETTO, case when isnull(CON.tipoProgetto, '') = '' then 'Default' when CON.tipoProgetto = 0 then 'Default' else 'ProgettoInvestimento' end as TIPO_PROGETTO, CON.AREA AS ID_AREA, CASE WHEN ISDATE(SPB.DTRIFE) = 0 THEN NULL ELSE CAST(CAST(SPB.DTRIFE AS VARCHAR(8)) AS DATETIME) END AS DATA_OPERAZIONE, NULL AS DATA_VALUTA, -- 105 PER FORMAT DD/MM/YYYY NULL AS DATA_REGOLAMENTO, SPB.QUOTE AS QUANTITA, NULL AS PREZZO, SPB.CTV AS CTV, SPB.VALORE AS CTV_NOMINALE, CASE WHEN SPB.CVN = 0 THEN NULL ELSE SPB.CVN END AS VERSATO_NETTO, SPB.PARTVIA AS PARTVIA_DISINV, CASE WHEN ISDATE(SPB.PARTVIAAL) = 0 THEN NULL ELSE CAST(CAST(SPB.PARTVIAAL AS VARCHAR(8)) AS DATETIME) END AS DATA_PARTVIA_DISINV, NULL AS PARTVIA_INV, SPB.RENDINIZ AS REND_SOTTOSCRIZIONE, NULL AS REND_TRIMESTRE, SPB.RENDANNO AS REND_ANNO, CON.StrType, CON.Complessita AS COMPLEX, CON.DescrizioneEmittente as EMITTENTE, SPB.ISIN, CON.chiaveClientePB, --nuovo 0 AS REND_NON_RAPPR, CON.ChiaveProgetto AS ORDINAMENTO_PROGETTO, CASE WHEN CON.orizzonteTemporale = 0 THEN NULL ELSE CON.orizzonteTemporale END AS ORIZZ_TEMP_NUM, CASE WHEN ISNULL(ORIZZONTETEMPORALE, 0) = 0 THEN NULL ELSE LTRIM(RTRIM(ORIZZONTETEMPORALE)) + ' anni' END AS ORIZZONTETEMPORALE, CON.CHIAVEPROGETTO AS CHIAVEPROGETTO -- fine nuovo FROM C6STAGINGPERIODICO.SPB_CONTR_SINTESI SPB INNER JOIN C6StagingPERIODICO.RP_Consulenza CON ON CON.rete = SPB.RETE AND CON.cod_fiscale = SPB.CODFIS AND CON.Position_id = SPB.positionid INNER JOIN C6STAGINGPERIODICO.RP_CATALOGOPRODOTTI KAT ON SUBSTRING(SPB.POSITIONID,1,57)=KAT.CATALOGUEID LEFT JOIN C6StagingPeriodico.RP_ChiaviMonitoraggio CM ON CON.chiaveprogetto = CM.chiaveProgetto AND CM.stato = 1 LEFT OUTER JOIN C6STAGINGPERIODICO.RP_AnEmittente MIT ON MIT.Emittente =KAT.EMITTENTE WHERE SPB.TIPPROD = 'CC' --***INIZIO INTERVENTI OMNIA*** or SPB.Isin = 'EURO00000009' SELECT RETE, COD_FISCALE, POSITIONID,@idTipoControllo idtipocontrollo into #TbErrori FROM #Verifica_CAMPIONE GROUP BY RETE, COD_FISCALE, POSITIONID HAVING COUNT(*) > 1 declare @idElab int select @idElab=max(id_elab) from c6martperiodico.elaborazioni --select * from c6martperiodico.tb_tipocontrollo Insert into C6MartPeriodico.TB_SegnalazioniDataQuality ( idTipoControllo, rete, codiceFiscale, descSegnalazione, idElaborazione, richiesta, idFaseElaborazione) select tbErr.idTipoControllo,rete,COD_FISCALE,DescSegnalazione,@idelab,'',@idFaseElaborazione from #TbErrori tbErr inner join c6martperiodico.tb_tipocontrollo Tipo on tbErr.idtipocontrollo = tipo.idTipoControllo end