Como? em caso de duplicidade, pegar apenas o primeiro encontrado

4 respostas Resolvido
oracle11
fabricioluiz

Prezados, bom dia!
Vejam só

a consulta que faço me da esse resultado:

O resultado esta correto, até certo ponto. Ele duplica o incident_id quando este registro tem mais de uma ação ( houve ações nas linhas 3 e 5), assim, gostaria fazer o select onde, caso houvesse mais de uma ação, me retornasse apenas a primeira ação daquele registro, e os demais conforme exibidos.

Na clausula where eu nao posso informar o numero da linha, pois a linha varia de acordo com o momento da ação. Então nunca sera um numero fixo. E o distinct no campo incident_id tambem não funciona.

E agora, quem poderá me ajudar? Agradeço toda a ajuda!

4 Respostas

A
Solucao aceita

uma das formas possíveis seria:

select a.incident_id
,         a.dtacao
,         a.dptacao
,         a.deptatribui
,         a.totaltempo
,         a.linha
from acao a
where a.linha = (select min(b.linha)
                     from acao b
                     where b.incident_id = a.incident_id)
fabricioluiz

Muitíssimo obrigado, Ademilton!

Resolveu!

A

apenas para complementar, há alternativas mais performáticas do que isso. Veja uma explicação aqui por exemplo: funções analiticas oracle

fabricioluiz

Obrigado! Será muito útil.

Criado 31 de janeiro de 2017
Ultima resposta 31 de jan. de 2017
Respostas 4
Participantes 2