fazer order by em campo com SUM ?
bom dia caros colegas gostaria de tirar uma duvida não sei se é possivel, preciso fazer um relatório
onde ele me liste o ranking dos clientes que mais compraram.
fiz o seguinte select :
select v1.COD_CLIENTE , c.nom_cliente, sum(v1.TOT_LIQUIDO) as tot_liquido FROM vendas1 v1, cliente c
where c.cod_cliente=v1.cod_cliente
group by v1.cod_cliente, nom_cliente
order by ?????????????????
bom até ai tá ok só que agora eu precisava ordenar esse resultado do sum meu do maior para o menor
mas quando coloco no order by o campo TOT_LIQUIDO dá um erro se sql (Invalid expression in the ORDER BY clause (not contained in either an aggregate function or the GROUP BY clause).
)
será que não posso tentar ordenar um valor agregado ?
existe alguma outra maneira de fazer esse select ordenando os cliente que compram mais?
Abs, agradeço a atenção de todos.
Felipe Sanches
onde ele me liste o ranking dos clientes que mais compraram.
fiz o seguinte select :
select v1.COD_CLIENTE , c.nom_cliente, sum(v1.TOT_LIQUIDO) as tot_liquido FROM vendas1 v1, cliente c
where c.cod_cliente=v1.cod_cliente
group by v1.cod_cliente, nom_cliente
order by ?????????????????
bom até ai tá ok só que agora eu precisava ordenar esse resultado do sum meu do maior para o menor
mas quando coloco no order by o campo TOT_LIQUIDO dá um erro se sql (Invalid expression in the ORDER BY clause (not contained in either an aggregate function or the GROUP BY clause).
)
será que não posso tentar ordenar um valor agregado ?
existe alguma outra maneira de fazer esse select ordenando os cliente que compram mais?
Abs, agradeço a atenção de todos.
Felipe Sanches
Felipe Sanches
Curtidas 0
Respostas
Wilson Junior
11/03/2010
Caro Felipe,
Se você utiliza o Firebird 2.x, você pode colocar o ALIAS da coluna no "ORDER BY", mas se utiliza uma versão inferior coloque o índice da coluna (lembrando que o índice começa em 1). Exemplos:
Firebird 2.x
Versão inferior ao Firebird 2.x
Obs.: o mesmo vale para o "GROUP BY".
Espero ter colaborado.
Se você utiliza o Firebird 2.x, você pode colocar o ALIAS da coluna no "ORDER BY", mas se utiliza uma versão inferior coloque o índice da coluna (lembrando que o índice começa em 1). Exemplos:
Firebird 2.x
SELECT v1.Cod_Cliente, c.Nom_Cliente, SUM(v1.TOT_LIQUIDO) AS Tot_Liquido FROM VENDAS1 v1 INNER JOIN CLIENTE c ON (c.Cod_Cliente = v1.Cod_Cliente) GROUP BY v1.Cod_Cliente, Nom_Cliente ORDER BY Tot_Liquido
Versão inferior ao Firebird 2.x
SELECT v1.Cod_Cliente, /* Índice 1 */ c.Nom_Cliente, /* Índice 2 */ SUM(v1.TOT_LIQUIDO) AS Tot_Liquido /* Índice 3 */ FROM VENDAS1 v1 INNER JOIN CLIENTE c ON (c.Cod_Cliente = v1.Cod_Cliente) GROUP BY v1.Cod_Cliente, Nom_Cliente ORDER BY 3
Obs.: o mesmo vale para o "GROUP BY".
Espero ter colaborado.
GOSTEI 0
Felipe Sanches
11/03/2010
Wilson, colocando o indice deu certo, obrigado pela ajuda
Abs
Felipe
Abs
Felipe
GOSTEI 0
Wilson Junior
11/03/2010
Precisando é só postar.
GOSTEI 0