GARANTIR DESCONTO

Fórum Excluindo arquivos duplicados #460463

07/11/2013

0

com em pesquisa na internet achei este código que verifica arquivos duplicados más, aparece somente códigos que não são duplicados..

SELECT COUNT(*) FROM os
GROUP BY DESCRICAO
HAving count(ID_OS)>1



Tenho a tabela OS e o campo ID_OS

más nela tem registros duplicados de mesmo código..
estou usando o SQL EDITOR do IBXpert e gostaria de ver quais numeros do ID_OS esta duplicado e poder exclui-los, parece ser simples más num to dando conta não...

vlw t+
Gilmar Moraes

Gilmar Moraes

Responder

Posts

08/11/2013

Thiago Irrazabal

Bom dia, já tentou assim?

SELECT ID_OS, COUNT(*) FROM OS
GROUP BY 1
HAVING COUNT(*) > 1





Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

08/11/2013

Gilmar Moraes

Bom dia, já tentou assim?

SELECT ID_OS, COUNT(*) FROM OS
GROUP BY 1
HAVING COUNT(*) > 1



Amigo, deu certinho..más como faço para excluir os duplicados..só para se ter uma idéia tem arquivos com 7 ocorrencia de duplicidade..vlw mesmo

Att,
Thiago Irrazabal de Oliveira.


pesquisando achei este codigo em doc aki do forum mesmo..
Delete From os t1
Where rowid < (Select max(rowid) From os t2 Where t1.primary_key = t2.primary_key);


más minha dúvida,... não atribuí chaves primárias para poder fazer a copia do bando de dados, más codigo acima parecer ser obrigatorio isso..más entendo que não era para existir duplicidade de um mesmo codigo..entãi isso não faria muito sentido..
Responder

Gostei + 0

08/11/2013

Russimar Silva

Mensagem com o usuário errado! :/
Responder

Gostei + 0

08/11/2013

Thiago Irrazabal

Segue o script para exclusão dos registros duplicados.

DELETE FROM OS WHERE ID_OS IN (SELECT ID_OS FROM OS
GROUP BY ID_OS
HAVING COUNT(*) > 1);





Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

08/11/2013

Gilmar Moraes

Segue o script para exclusão dos registros duplicados.

DELETE FROM OS WHERE ID_OS IN (SELECT ID_OS FROM OS
GROUP BY ID_OS
HAVING COUNT(*) > 1);





Att,
Thiago Irrazabal de Oliveira.


SELECT ID_OS, COUNT(*) FROM OS
GROUP BY 1
HAVING COUNT(*) > 1;

DELETE FROM OS WHERE ID_OS IN (SELECT ID_OS FROM OS
GROUP BY ID_OS
HAVING COUNT(*) > 1);


então..

precisa destes dois códigos ou só o ultimo

dá este erro

Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Token unknown - line 5, column 1.
DELETE.



Responder

Gostei + 0

08/11/2013

Alessandro Yamasaki

O último SQL é a exclusão dos seus registros conforme as dicas dos colegas. Sozinho ele funciona?:
Responder

Gostei + 0

08/11/2013

Thiago Irrazabal

O select era apenas para te mostrar quais os registros, o delete tu tem que passar no executor de scripts (CTRL + F12), ele sozinho é claro...




Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

08/11/2013

Gilmar Moraes

O select era apenas para te mostrar quais os registros, o delete tu tem que passar no executor de scripts (CTRL + F12), ele sozinho é claro...




Att,
Thiago Irrazabal de Oliveira.


Amigo..deu tudo certo e funcionou perfeito..muito obrigado pela ajuda..t+
Responder

Gostei + 0

09/11/2013

Gilmar Moraes

O select era apenas para te mostrar quais os registros, o delete tu tem que passar no executor de scripts (CTRL + F12), ele sozinho é claro...




Att,
Thiago Irrazabal de Oliveira.


estou prescisando de um infomarção boba más nem sei por onde começo ..nesta mesma tabela precisei inserir um campo que se chama ENTREGUE que vai receber valores 0 e 1, de inicio queria que todos os campos recebecem o valor 0 tem como fazer isso em SQL sem prescisar programar no delphi ?
Responder

Gostei + 0

09/11/2013

Alex Lekao

Oi Bom dia!!

Da para vc colocar na campo, uma informacao como default zero.
Responder

Gostei + 0

09/11/2013

Gilmar Moraes

Oi Bom dia!!

Da para vc colocar na campo, uma informacao como default zero.


uso o IBXPERT.. como faço isso ?
Responder

Gostei + 0

09/11/2013

Thiago Irrazabal

ALTER TABLE OS ADD ENTREGUE INTEGER DEFAULT 0;




Att,
Thiago Irrazabal de Oliveira.
Responder

Gostei + 0

10/11/2013

Deivison Melo

ou sempre que efetuar as pesquisas fazer o seguinte:

select COALESCE(ENTREGUE,0) ENTREGUE from OS


O Comando COALESCE faz isso...

Responder

Gostei + 0

10/11/2013

Gilmar Moraes

ou sempre que efetuar as pesquisas fazer o seguinte:

select COALESCE(ENTREGUE,0) ENTREGUE from OS


O Comando COALESCE faz isso...



tipo..na verdade é o seguinte, tenho duas tabelas que quero integrar em apenas uma, tenho uma tabela arquivo morto e uma tabela OS. No arquivo morto, todos os registros (1500 + ou -) receberão no seu campo ENTREGUE igual a 1 ena outra tabela OS receberá 0 e depois as dua tabelas será exportada para penas uma..onde os registros que receberam 1 será os dados baixa e os 0 será os em aberto..neste caso vc falou alguma coisa sobre pesquisa..num teria como já lançar o valor sem prescisar desta busca..estava pensando em programae no delphi um while para fazer isso más acho que em sql é muito mais rápido..vlw
Responder

Gostei + 0

10/11/2013

Gilmar Moraes

ALTER TABLE OS ADD ENTREGUE INTEGER DEFAULT 0;




Att,
Thiago Irrazabal de Oliveira.


dá este erro..

This operation is not defined for system tables.
unsuccessful metadata update.
STORE RDB$RELATION_FIELDS failed.
attempt to store duplicate value (visible to active transactions) in unique index "RDB$INDEX_15".


esta é uma tabela antiga que se chama ORCAMENTO_OFIC_ELET e o campo BAIXA

o codigo que deu o erro ficou assim.
ALTER TABLE ORCAMENTO_OFIC_ELET ADD BAIXA INTEGER DEFAULT 0;


vlw
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar