Usuário com melhor resposta
Tirar duplicidade com o Distinct

Pergunta
-
Boa tarde,
Tenho uma base com tres milhoes de nome, mas com CNPJ 's duplicados... tentei tirar essa duplicidade e transferir todos os dados para outra tabela com a seguinte query:
select distinct cnpj, nome, logradouro, telefone into tabelaxxxx from td2009
Mas essa select me retornou os dados duplicados. Existe alguma outra query no qual eu possa tirar a duplicidade de cnpj e transferir a base sem duplicidade com todos os outros campos para uma nova tabela?
Agradeço pela ajuda de vocês!
Abs,
Respostas
-
Lá Leninha,O distinct diz respeito ao registro inteiro.Tente desta forma:
select cnpj, MAX(nome), MAX(logradouro), MAX(telefone) into tabelaxxxx from td2009 group by cnpj
Veja se resolve e nos retorne.Abraço!!
Classifiquem as respostas. O Fórum agradece!!- Sugerido como Resposta Alexandre VM terça-feira, 17 de novembro de 2009 10:37
- Marcado como Resposta Fernanda Simões terça-feira, 17 de novembro de 2009 13:06
Todas as Respostas
-
Lá Leninha,O distinct diz respeito ao registro inteiro.Tente desta forma:
select cnpj, MAX(nome), MAX(logradouro), MAX(telefone) into tabelaxxxx from td2009 group by cnpj
Veja se resolve e nos retorne.Abraço!!
Classifiquem as respostas. O Fórum agradece!!- Sugerido como Resposta Alexandre VM terça-feira, 17 de novembro de 2009 10:37
- Marcado como Resposta Fernanda Simões terça-feira, 17 de novembro de 2009 13:06
-
Oi Alexandre. Obrigada pela ajuda!
Coloquei a query da seguinte forma (o de cima foi só um exemplo de bd):
SELECT CNPJ, Max(NOME), Max(TIPO_DOC), Max(CNPJ), Max(TIPO_LOGR_A), Max(LOGRADOURO_A), Max(NUMERO_L), Max(COMPLEMENTO_A), Max(CEP_A), Max(BAIRRO_A), Max(CIDADE_A), Max(UF_A), Max(DDD_A), Max(TELEFONE_A) into TABELAXXX FROM TBP_P2 GROUP BY CNPJSó q me trouxe o seguinte resultado:
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 2 of 'TABELAXXX'.
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 3 of 'TABELAXXX'.
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 4 of 'TABELAXXX'.
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 5 of 'TABELAXXX'.
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 6 of 'TABELAXXX'.
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 7 of 'TABELAXXX'.
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 8 of 'TABELAXXX'.
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 9 of 'TABELAXXX'.
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 10 of 'TABELAXXX'.
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 11 of 'TABELAXXX'.
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 12 of 'TABELAXXX'.
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 13 of 'TABELAXXX'.
Server: Msg 8155, Level 16, State 1, Line 1
No column was specified for column 14 of 'TABELAXXX'. -
-
-
Leninha,
Como você esta querendo fazer um Select Into gerando uma nova table que os dados desta atual, mas esta utilizando Group By é necessário nomear cada coluna que esta sendo agrupa para que o SQL Server possa gerar a outra table com os respectivos nomes para cada coluna.
Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA -
Olá,
Aproveitando o tópico, seria possível criar uma function para percorrer e editar uma tabela (no caso, a base de CNPJ´s), conforme é feito com recordset no VBA?
Obs.: a instrução
select cnpj, MAX(nome), MAX(logradouro), MAX(telefone)
into tabelaxxxx
from td2009
group by cnpj
deve resolver se a duplicidade estiver ocorrendo em todos os campos; se a duplicidade estiver somente no CNPJ, poderá retornar nome, logradouro e telefone de registros diferentes, dentro do mesmo grupo de CNPJ´s duplicados. -
Leninha,
Você conseguiu solucionar o seu problema?
Caso afirmativo poste a solução para que outras pessoas se beneficiem.Att,
Fernanda
“Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”. -