SELECT DISTINCT X GROUP BY NO MS SQL 2000

ADELMOMELO 25/05/2011 21:03:38
#374996
Olá amigos!!

Gente estou tentanto gerar dados de uma TabelaA para uma TabelaB de forma que não tenha linhas duplicadas na TabelaB, entretanto, o que parecia simples estou tendo enorme dificuldade e não estou conseguindo,pois ao rodar o sql as informações na saida aparecem duplicadas, o Banco que uso é o MS SQL2000 e a sql rodada é como mostrar abaixo:
INSERT INTO Clientes
(CPF_CNPJ, NOME)
SELECT DISTINCT CPF_CGC, NOME_SACADO
FROM TITULOS
WHERE (DATA_RECEBIMENTO >= [ô]2003/01/01[ô]) AND (DATA_RECEBIMENTO <= [ô]2003/01/01[ô]) AND (CPF_CGC IS NOT NULL) AND (CPF_CGC <> [ô]0[ô])
GROUP BY CPF_CGC, NOME_SACADO

a saida dos dados é o mostrado do exemplo a seguir:

1 00000000205320 BANCO DO BRASIL SA
2 00000000270571 BANCO DO BRASIL SA
3 00000000431257 BANCO DO BRASIL SA
4 00000802000959 HC PNEUS SA
5 00037677446 MARIO JORGE MACHADO BARROS
6 00048785004240 INDAIA BRASIL AGUA MINERAIS LTDA
7 00048785004240 INDAIA BRASIL AGUAS MINERIAS LT
8 00063960005160 WAL MART BRASIL LT
9 00063960005160 WAL MART BRASIL LTDA
10 00063960005160 WALL MART BRASIL LTDA
11 00096346493 PATRICIA ROCHA N FERREIRA
12 00096538481 LUCINEIDE GOMES

OBS: Notem que as linhas 6,7 se repetem( cpf_cnpj e nome), bem como, nas linhas de 8 a 10, e o meu objetivo é gerar os dados únicos da TabelaB, apenas com estes dois campo de CPF_CNPJ e a Descrição do Nome, sendo o campo CPF_CNPJ chave primária. Lembrando que usando o select com as opções group by e o distrinct seria para não haver repetição de linhas, como faço para gerar apenas um registro CPF_CNPJ e NOME, usando o group by pelo primeiro campo e conservando a descrição(NOME), uma vez que da forma acima a opção group by não permite gerar apenas por um campo e está realizando pelos dois, ou seja, necessito que seja gerado os dados como abaixo:

1 00000000205320 BANCO DO BRASIL SA
2 00000000270571 BANCO DO BRASIL SA
3 00000000431257 BANCO DO BRASIL SA
4 00000802000959 HC PNEUS SA
5 00037677446 MARIO JORGE MACHADO BARROS
6 00048785004240 INDAIA BRASIL AGUA MINERAIS LTDA
7 00063960005160 WAL MART BRASIL LT
8 00096346493 PATRICIA ROCHA N FERREIRA
9 00096538481 LUCINEIDE GOMES

Alguém poderia ajudar?
LLAIA 25/05/2011 21:35:55
#374997
repeteco de tópico pode não brother
DANLEONHART 25/05/2011 22:51:41
#375010
Eu faria primeiro o SELECT DISTINCT para depois fazer o INSERT...minha opinião...
Se o CPF é a Chave Primária, acho que não é necessário o DISTINCT, já que a PK (PrimaryKey) não permite inclusão duplicada de informação no Campo...
LUIS.HERRERA 26/05/2011 07:47:30
#375025
Como o Bento disse, os nomes são diferentes, mesmo que só uma letra.
6 00048785004240 INDAIA BRASIL AGUA MINERAIS LTDA
7 00048785004240 INDAIA BRASIL AGUAS MINERIAS LT

Isso representa que seu sistema não usa indexação para gravar dados, mas sim tem entrada manual de informações, o que gera tal situação, ou seja, um mesmo CNPJ com dois nomes diferentes. Se fosse usado índice para gravar o registro e não seu nome, isso não aconteceria, além do que seu banco ficaria muito menor, á que não duplicaria informações de texto que já estão lá.
ADELMOMELO 27/05/2011 07:06:12
#375104
Olá,
Gente eu só quero gerar uma talelaB(que terá chave primária) a partir de uma tabelaA(que contém os campos cpf e nome) nos diversos registros. A instrução SQL que estou tentando testar é como mostrado acima, alguém nunca teve esta necessidade de gerar uma nova tabela a partir de dados existentes sem repetição de linhas e colunas?
GUTOTEC 27/05/2011 09:45:48
#375123
Resposta escolhida
Adelmo,
acho que faltou fazer um Having na sua expressao do CPF_CGC do cliente

Tenta selecionar seu Dados mais ou menos algo assim

Espero ter ajudado


Citação:


SELECT NOME, COUNT(CPF_CGC) as Total
FROM TITULOS
GROUP BY CPF_CGC
HAVING COUNT(CPF_CGC) > 1

ADELMOMELO 29/05/2011 21:49:52
#375264
Colega GOODSPEAKERS,

E como seria o update da tabela gerada com os cpf_cnpj, para pegar agora apenas um nome correspondente a este cpf_cnpj?
Página 1 de 2 [12 registro(s)]
Tópico encerrado , respostas não são mais permitidas