ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Excluir registros duplicados

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
karlosrapanui
Profissional
Profissional


Registrado: Terça-Feira, 29 de Agosto de 2006
Mensagens: 538

MensagemEnviada: Seg Abr 09, 2018 9:42 am    Assunto: Excluir registros duplicados Responder com Citação

Eu tenho um select que me retorna alguns registros duplicados, pegando pelos campos CPF e BENEFICIO

O select é esse

SELECT BENEFICIO, CPF, COUNT(*) as Quantidade
FROM ARQUIVO
WHERE SUBSTR(CPF,1,1) <> '0' AND BENEFICIO <> 'null'
GROUP BY BENEFICIO, CPF
HAVING COUNT(*) > 1
ORDER BY CPF

Preciso de uma select para excluir somente UM registro duplicado.

Utilizando Firebird

Alguem tem uma ideia ?

Valeu
Carlos
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Abr 10, 2018 10:47 am    Assunto: Responder com Citação

Bom dia,

Acho que você pode utilizar a função Max ou Min para obter o Id de um dos registros.

PS: acho que não existe uma regra no fórum sobre isso, por isso deixo totalmente a seu critério, mas acredito que a frase da sua assinatura deva causar alguns maus entendidos

Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
karlosrapanui
Profissional
Profissional


Registrado: Terça-Feira, 29 de Agosto de 2006
Mensagens: 538

MensagemEnviada: Ter Abr 10, 2018 1:14 pm    Assunto: Responder com Citação

Apesar de não ser o que parece a frase que utilizo, em respeito a sua opinião, que já me ajudou bastante nesse fórum.....estou removendo a frase....

Peço desculpas se causei algum mal entendido....
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular MSN Messenger
dorivansousa
Novato
Novato


Registrado: Quinta-Feira, 18 de Março de 2004
Mensagens: 9
Localização: Açailândia - Ma

MensagemEnviada: Ter Abr 10, 2018 2:16 pm    Assunto: execute block Responder com Citação

no firebird eu faria assim

Código:
execute block
as
declare variable codigo integer;
declare variable cpf varchar(20);
begin
  for select cpf
      from arquivo
      where substr(cpf,1,1) <> '0' and beneficio <> 'null'
      group by cpf
      having count(cpf)>1
  into :cpf do
  begin
    select min(codigo) from arquivo where cpf = :cpf into :codigo;

    if (codigo > 0) then
      delete from arquivo where codigo = :codigo;
  end
end
[/code]
_________________
Voçê ensina melhor aquilo que mais precisa aprender
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Yahoo Messenger MSN Messenger
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Ter Abr 10, 2018 2:36 pm    Assunto: Responder com Citação

karlosrapanui escreveu:
Apesar de não ser o que parece a frase que utilizo, em respeito a sua opinião, que já me ajudou bastante nesse fórum.....estou removendo a frase....

Peço desculpas se causei algum mal entendido....


Não tem do que se desculpar não, só comentei porque as vezes alguem podia interpretar de forma errada.

Voltando a questão, conseguiu resolver? Segue um exemplo:

Código:
DELETE FROM ARQUIVO AS A
WHERE
    SUBSTR(A.CPF,1,1) <> '0' AND
    A.BENEFICIO <> 'null' AND
    A.ID = (SELECT MAX(S.ID) FROM ARQUIVO AS S
            WHERE
                S.BENEFICIO = A.BENEFICIO AND
                S.CPF = A.CPF
            HAVING
                COUNT(*) > 1)


Espero que ajude
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB