-- =============================================  
-- Author:  Caruso Fabrizio  
-- Create date: 17/09/2014  
-- Description:   
-- Individuazione dei Clienti che presentano nella piramide modello una o più   
-- aree/progetti duplicati  
-- Impostazione Codice TIPO CONTROLLO per il controllo specifico   
-- ( per riferimenti al tipo controllo verificare tabella "tb_tipocontrollo" )  
-- =============================================  
CREATE procedure [C6MartPeriodico].[SP_DQ_PiramideAreeDuplicate]   
@idFaseElaborazione int  
AS  
BEGIN  
Declare @idTipoControllo int  
set @idTipoControllo=6    
SELECT DISTINCT    
  d.rete,   
 case when(isnull(ltrim(rtrim(codman)),'') <> '') then 'FF@'+codman  
   when (isnull(codfis,'') <> '') then codfis    
   else c.piva  
 end as Codicefiscale,         
 @idTipoControllo idtipocontrollo  
    into #TbErrori  
 FROM [CONSUNI_PERIODICO].[consulenzaunica].dbo.Contratto a  
 JOIN [CONSUNI_PERIODICO].[consulenzaunica].dbo.ClientePB b   
  ON b.chiaveClientePB = a.chiaveClientePB   
  AND a.status in ('SEI','AVANZATOBASE','REVOCASEI')  
 JOIN [CONSUNI_PERIODICO].[consulenzaunica].dbo.Cliente c   
  ON b.chiaveCliente = c.chiaveCliente   
 JOIN [CONSUNI_PERIODICO].[consulenzaunica].dbo.PromotoreBancario d   
  ON b.chiavePB = d.chiavePB  
 WHERE  
  A.chiaveclientepb in (   
  select distinct chiaveclientepb   
  FROM   
  (  
  --SELECT chiaveclientepb,area,tipoprogetto,COUNT(*) as c FROM     
  --[CONSUNI_PERIODICO].[consulenzaunica].dbo.ProgettiPiramideModello  
  --where tipoprogetto =0 and area <> 'na' and isnull(dtFineValidita,'99991231')>GETDATE()  
  --group by chiaveclientepb,area,tipoprogetto  
  --having COUNT(*)<>1   
   SELECT chiaveclientepb,area,COUNT(*) as c   
   FROM [CONSUNI_PERIODICO].consulenzaunica.dbo.piramidemodello pirmod  
   inner join [CONSUNI_PERIODICO].consulenzaunica.dbo.areamodello areamod  
   on pirmod.chiavePiramideMod = areamod.chiaveAreaMod  
   inner join [CONSUNI_PERIODICO].[consulenzaunica].dbo.ProgettiPiramideModello progmod  
   on progmod.chiaveAreaMod = areamod.chiaveAreaMod  
   where  area <> 'na'   
   group by chiaveclientepb,area  
   having COUNT(*)<>1  
  ) t  
 )    
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,tbErr.rete,Codicefiscale,DescSegnalazione,@idelab,'',@idFaseElaborazione  
from #TbErrori tbErr  
inner join c6martperiodico.tb_tipocontrollo Tipo  
on tbErr.idtipocontrollo = tipo.idTipoControllo  
inner join c6stagingperiodico.appo_contratti_v Contr  
on  tbErr.rete = contr.rete  
and tbErr.CodiceFiscale = contr.cod_fiscale  
end