SELECT DISTINCT X GROUP BY NO MS SQL 2000
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?
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?
repeteco de tópico pode não brother
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...
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...
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á.
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á.
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?
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?
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
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
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?
E como seria o update da tabela gerada com os cpf_cnpj, para pegar agora apenas um nome correspondente a este cpf_cnpj?
Tópico encerrado , respostas não são mais permitidas