Filtrar cpfs duplicados Chave primaria auto increment id_pessoa
Boa tarde, Prezados.
Tenho a seguinte situação.
Existe uma tabela que possuí diversas informações e nela preciso filtrar todos os registros com o mesmo cpj/cnpj e que estejam com id_pessoa diferente.
O problema, acredito eu, que no passado não existia uma trava que bloqueava a inserção de pessoa com o mesmo cpf.
Exemplo:
cpf/cnpj NOME ID_PESSOA
07998414000538 EMPRESA1 LTDA-EPP 173435
07998414000538 EMPRESA1 LTDA-EPP 173438
025737682435 LUIZ HENRIQUE 40025
025737682124 MARCOS AJ 22551
025737682124 MARCOS AJ 22551
025737682124 MARCOS AJ 22551
025737682124 MARCOS AJ 00214
025737682124 MARCOS AJ 24457
Tenho a seguinte situação.
Existe uma tabela que possuí diversas informações e nela preciso filtrar todos os registros com o mesmo cpj/cnpj e que estejam com id_pessoa diferente.
O problema, acredito eu, que no passado não existia uma trava que bloqueava a inserção de pessoa com o mesmo cpf.
Exemplo:
cpf/cnpj NOME ID_PESSOA
07998414000538 EMPRESA1 LTDA-EPP 173435
07998414000538 EMPRESA1 LTDA-EPP 173438
025737682435 LUIZ HENRIQUE 40025
025737682124 MARCOS AJ 22551
025737682124 MARCOS AJ 22551
025737682124 MARCOS AJ 22551
025737682124 MARCOS AJ 00214
025737682124 MARCOS AJ 24457
J Agripino
Curtidas 0
Respostas
Fernando Vicari
04/11/2015
Boa noite Jamilton
Não sei se o SQLServer tem a opção de você utilizar a clausula having.
Se tiver você pode fazer algo assim:
No oracle isso iria funcionar que é um espetáculo.
Não sei se o SQLServer tem a opção de você utilizar a clausula having.
Se tiver você pode fazer algo assim:
Select ID, NOME, CPF
from tabela_pessoa
where CPF in (select cpf
from (select cpf, count(*)
from tabela_pessoa
group by cpf
having count(*) > 1))No oracle isso iria funcionar que é um espetáculo.
GOSTEI 0
Marcos P
04/11/2015
Uma alternativa no Sql Server é agrupar a partir de uma temporária...
select cpf_cnpj into #TMP from pessoas group by cpf_cnpj, id_pessoa select cpf_cnpj, count(1) as Repeticoes from #TMP group by cpf_cnpj having count(1) > 1 drop table #TMP
GOSTEI 0
Marcos P
04/11/2015
ou um INNER JOIN da tabela com ela mesmo...
select distinct p1.cpf_cnpj from pessoas p1 inner join pessoas p2 on (p1.cpf_cnpj = p2.cpf_cnpj and p1.id_pessoa <> p2.id_pessoa)
GOSTEI 0
Marcos P
04/11/2015
E aí ?
Resolveu ?
Resolveu ?
GOSTEI 0