GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como retornar apenas o primeiro registro de cada grupo de registros duplicados


#1

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.


#2

ola,

Utilize a clausa-la having

https://www.w3schools.com/sql/sql_having.asp


#3

Você tem um exemplo?


#4

No link que te passei tem, mas vamos-la

select (colocar aqui os campos) from produto p group by p.referencia having count(p.referencia) > 1

como a cor é diferente, voce nao colocaria ela nos campos


#5

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…


#6

@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.


#7

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.


#8

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?


#9

Eu dei uma pesquisava por algum exemplo visual e consegui esse que, estou certo que vai satisfazer a todos nessa questão:

https://pt.wikihow.com/Excluir-Registros-Duplicados-no-Oracle

Se não for suficiente, continuem mandando as dúvidas para que as pessoas por aqui tentem ajudar de outras formas.


#10

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.