211 lines
7.6 KiB
Transact-SQL
211 lines
7.6 KiB
Transact-SQL
-- =============================================
|
|
-- 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 |