Ordenação sem agrupamento

Dicas e truques sobre Oracle Reports Builder - modo gráfico ou modo caractere, ascii, arquivo .PRT, etc
Responder
lorrayne
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Seg, 28 Mar 2011 11:23 am
Localização: Uberlândia - MG

Olá a todos.

Estou fazendo uma consulta em um relatório que está sendo feita mais ou menos da seguinte forma:

select p.campo1, p.campo2, sum(i.valor * i.quantidade) valor
from tabela1 p,
tabela2 i,
tabela2 e
where
--condições de junççao das tabelas e condições de pesquisa
group by p.campo1, p.campo2
having
--condições de existencia
order by p.campo1, p.campo2.

A minha dúvida é o seguinte, preciso ordenar esta consulta por um campo que não estou trazendo no select da tabela p, pois quando busco ele é forçado fazer o agrupamento por esta campo, o que está trazendo resultados repetidos no meu relatório. Isso é possível?

Grata.

Att,
Lorrayne
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Inclui ele no order by que deve solucionar.

Mas vale lembrar que a prioridade de ordenação no Reports são as quebras(Asc/Desc), depois os campos do Order By.
burga
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Qui, 26 Nov 2009 1:05 pm
Localização: SP
Ricardo H. Tajiri

preciso ordenar esta consulta por um campo que não estou trazendo no select da tabela p, pois quando busco ele é forçado fazer o agrupamento por esta campo, o que está trazendo resultados repetidos no meu relatório.
Como você disse, o seu campo no group by está fazendo com que o "p.campo1, p.campo2" se repita na resposta. Isso significa que existem valores distindos do seu campo pros campos "p.campo1, p.campo2". Com isso, você deve optar por somente um dos valores distintos (ex.: menor dos valores ou maior dos valores) pra depois ordenar a resposta por ele.

Assim, você pode fazer:

select t.campo1, t.campo2, t.valor from (

select p.campo1, p.campo2, sum(i.valor * i.quantidade) valor, min(p.campo_ordenacao) campo_para_ordenacao
from tabela1 p,
tabela2 i,
tabela2 e
where
--condições de junççao das tabelas e condições de pesquisa
group by p.campo1, p.campo2
having
--condições de existencia

) t
order by t.campo1, t.campo2, t.campo_para_ordenacao;
lorrayne
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Seg, 28 Mar 2011 11:23 am
Localização: Uberlândia - MG

:D :D Funcionou!!!

Usei o max(valor)

Muito obrigada a todos pela ajuda...

Att.

Lorrayne Magalhães
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 10 visitantes