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
Ordenação sem agrupamento
-
- 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
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.
Mas vale lembrar que a prioridade de ordenação no Reports são as quebras(Asc/Desc), depois os campos do Order By.
-
- Rank: DBA Pleno
- Mensagens: 232
- Registrado em: Qui, 26 Nov 2009 1:05 pm
- Localização: SP
Ricardo H. Tajiri
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.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.
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;
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 9 visitantes