Como retornar apenas o primeiro registro de cada grupo de registros duplicados
9 respostas
andrebmarinho
Ola pessoal,
Por favor uma ajuda, tenho uma tabela que possui grupos de registros duplicados, por exemplo tenho uma referencia A156 que esta repetida 5x a cada ocorrência se refere a um produto por exemplo: produtoA cor preto valor R$ 10,00, produtoA cor vermelho valor R$ 10,00 etc… , preciso de uma consulta que identifique a duplicação, mas só retorne o primeiro registro de cada grupo.
como a cor é diferente, voce nao colocaria ela nos campos
Emerzoom2 likes
Boa tarde,
Seu filtro (where) tem que conseguir trazer os registros fazendo um COUNT(o_que_vc_precisa) para fazer a contagem.
Já para pegar apenas uma linha, existem diversas formas: MAX(o_que_vc_precisa), FETCH FIRST 1 ROWS ONLY e por aí vai…
campelo.m
@Emerzoom reinvenção da roda fazer no where se existe o having justamente para isso! e quando voce usa o group by junto com o having ele ja retorna apenas uma linha.
Emerzoom
Eu só mostrei idéias de como fazer.
Não pedi pra reinventar, desinventar, inventalizar. Quem tem que saber se quer inventar alguma coisa é quem está com a dúvida.
Estou no forum desde 2005, já vi gente com dicas de todo tipo. Não creio que o que eu indiquei tivesse algum cunho indicativo de solução definitiva. Mas, Ok, se vc entende assim, por mim, tudo bem.
A
AbelBueno
O que você chama de “identifique a duplicação” ? Será uma coluna extra no resultado dizendo se há ou nao duplicados?
Também, qual é a regra para definir o “primeiro registro de cada grupo”? Por ordem que foi inserido? data? por produto em ordem alfabética?
Emerzoom
Eu dei uma pesquisava por algum exemplo visual e consegui esse que, estou certo que vai satisfazer a todos nessa questão:
Se não for suficiente, continuem mandando as dúvidas para que as pessoas por aqui tentem ajudar de outras formas.
Alessandro_Lesina_Gi
Se executar desta forma irá retornar somente os que não são duplicadas.
Portanto excluindo todos os duplicados. Tem que ser com first, max ou coisas do tipo.