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 

Agrupando dados [Resolvido]

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
valdimari
Novato
Novato


Registrado: Segunda-Feira, 26 de Fevereiro de 2007
Mensagens: 19

MensagemEnviada: Ter Jul 31, 2012 2:14 pm    Assunto: Agrupando dados [Resolvido] Responder com Citação

Pessoal,

Boa Tarde !!!

Estou trabalhando em uma migração de .DBF para o Firebird.

Para algumas migrações de tabelas tenho usado o IBExpert. Importo a tabela .DBF para o banco e alimento a tabela oficial do banco.
Hoje, me deparei com o seguinte problema:

A tabela tem como chave unica 3 campos, mas alguns registros estão com a chave duplicada. No select para inserção não consigo usar o Group by, pois existem mais campos e nem o Distinct, porque nos outros campos existem informações diferentes, na qual devo escolher apenas uma, com isso os registros duplicados continuam sendo buscados. Tentei:

GROUP BY - dá erro de agrupamento, pois no Group deveriam estar todos campos, mas aí eu perco a consistência que preciso.

select CAMPO1, CAMPO2, CAMPO3, CAMPO4, CAMPO5, CAMPO6
from TABELA
group by CAMPO1, CAMPO2, CAMPO3


DISTINCT - não me dá a consistência que preciso.

select Distinct CAMPO1, CAMPO2, CAMPO3, CAMPO4, CAMPO5, CAMPO6
from TABELA

O que preciso é agrupar com os 3 primeiros campos, podendo selecionar todos os campos da tabela para a inserção na outra.

Desde já agradeço...


Editado pela última vez por valdimari em Qua Ago 01, 2012 3:43 pm, num total de 1 vez
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 Jul 31, 2012 2:33 pm    Assunto: Responder com Citação

Boa tarde,

Acho que uma alternativa mais simples, mas que não sei se atenderá a sua necessidade, seria utilizar alguma função de agregação como Min ou Max nos outros campos:

Código:
select CAMPO1, CAMPO2, CAMPO3, min(CAMPO4), min(CAMPO5), min(CAMPO6)
from TABELA
group by CAMPO1, CAMPO2, CAMPO3


Se não atender, acho que você teria que passar qual seria o critério para definir qual registro ou quais valores devem prevalecer.

Espero que ajude.


Editado pela última vez por imex em Ter Out 03, 2023 3:43 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
valdimari
Novato
Novato


Registrado: Segunda-Feira, 26 de Fevereiro de 2007
Mensagens: 19

MensagemEnviada: Ter Jul 31, 2012 2:56 pm    Assunto: Resolvido Responder com Citação

imex,

Atendeu.

Funcionou perfeitamente.

Muito Obrigado.
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 Jul 31, 2012 3:03 pm    Assunto: Responder com Citação

Blz, agradeço o retorno.
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 -> Banco de Dados 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