Dúvida c/ order by

Delphi

03/01/2005

Uso Delphi 6 Firebird1.5 e DBexpress,

Faço o seguinte select para gerar um relatório de produtos vendidos, agrupados por código e com soma das quantidades.

select PRODUTOS.DESCRICAO,sum(DETALHE_VENDAS.QTD_PRODUTO)´+
                                             ´from DETALHE_VENDAS,PRODUTOS,RESUMO_VENDAS where´+
                                            ´ PRODUTOS.COD_BARRAS=DETALHE_VENDAS.COD_PRODUTO and DETALHE_VENDAS.NUM_RESUMO=RESUMO_VENDAS.NUM_RESUMO and cast(RESUMO_VENDAS.DATA_HORA as date)between :data1 and :data2 group by PRODUTOS.DESCRICAO´;




Agora eu gostaria de ordenar a consulta dos produtos por qtde vendida em ordem decrescente.

O problema e que se eu coloco somente o order by DETALHE_VENDAS.QTD_PRODUTO ele dá erro, ai eu preciso colocar o campo DETALHE_VENDAS.QTD_PRODUTO no group by também, só que quando faço isso ele não agrupa do modo certo. Ele agrupa por qtde e por descricao do produto e eu quero que ele agrupa apenas por descricao.


Até mais, valeu.


Gameiro

Gameiro

Curtidas 0

Respostas

Paulo_amorim

Paulo_amorim

03/01/2005

Olá

Tente agrupar pelo SUM, e não somente pelo campo

order by sum(DETALHE_VENDAS.QTD_PRODUTO)


Espero que ajude
Até+


GOSTEI 0
Gameiro

Gameiro

03/01/2005

Paulo Obrigado pela atenção.

Testei como você colocou no IBOCONSOLE e funcionou,
mas quando passo para o delphi da erro:
Token unknown - line 1 char 114

A minha select ficou assim

´select PRODUTOS.DESCRICAO,sum(DETALHE_VENDAS.QTD_PRODUTO)´+
                                             ´from DETALHE_VENDAS,PRODUTOS,RESUMO_VENDAS where´+
                                             ´PRODUTOS.COD_BARRAS=DETALHE_VENDAS.COD_PRODUTO and DETALHE_VENDAS.NUM_RESUMO=RESUMO_VENDAS.NUM_RESUMO and cast(RESUMO_VENDAS.DATA_HORA as date)between :data1 and :data2 group by PRODUTOS.DESCRICAO order by sum(DETALHE_VENDAS.QTD_PRODUTO) desc´;



Já procurei e não acho o erro, se eu retiro a parte nova da select funciona.

Muito obrigado


GOSTEI 0
Massuda

Massuda

03/01/2005

Falta um espaço depois do WHERE no seu SELECT.


GOSTEI 0
Everton

Everton

03/01/2005

Colega, tente o código abaixo:

´select PRODUTOS.DESCRICAO,sum DETALHE_VENDAS.QTD_PRODUTO) ´+
´from DETALHE_VENDAS,PRODUTOS,RESUMO_VENDAS ´+
´where PRODUTOS.COD_BARRAS=DETALHE_VENDAS.COD_PRODUTO ´+
´  and DETALHE_VENDAS.NUM_RESUMO=RESUMO_VENDAS.NUM_RESUMO´+
´  and cast(RESUMO_VENDAS.DATA_HORA as date) between :data1 and :data2 ´+
´group by PRODUTOS.DESCRICAO ´+
´order by 2 desc ´;



GOSTEI 0
Gameiro

Gameiro

03/01/2005

Valeu pessoal o problema estava no espaço depois do where como ele estava em outra linha não tinha percebido.


Muito Obrigado.


PS.: Não recebi a notificação que o tópico havia sido respondido.


GOSTEI 0
POSTAR