Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia á todos,
gostaria de pedir o auxilio a uma query que estou tentando montar.
O objetivo da query é, trazer uma lista de anúncios e a ordem deverá ser definida pela soma de dois campos, o que estiver com o valor normal é o que será utilizado no order by.
Da forma como estou usando não estou conseguindo porque , esta me trazendo apenas uma linha, acredito que é por causa do atributo (SUM).
SELECT * FROM anuncio
ORDER BY
(CASE
WHEN SUM(preco_machos) > SUM(preco_femeas) THEN preco_machos
WHEN SUM(preco_machos) < SUM(preco_femeas) THEN preco_femeas
END)
>
SELECT *
FROM anuncio
ORDER BY (CASE WHEN (preco_machos) > (preco_femeas) THEN preco_machos
WHEN (preco_machos) < (preco_femeas) THEN preco_femeas END)
Motta, obrigado pelo retorno.
mas não funcionou da forma como você informou. A lista é gerada porém não segue a ordem
difícil ...
teste
SELECT (CASE WHEN (preco_machos) > (preco_femeas) THEN preco_machos
WHEN (preco_machos) < (preco_femeas) THEN preco_femeas END) preco_maior,
anuncio.*
FROM anuncio
ORDER BY 1consegui da seguinte forma:
SELECT * FROM anuncio
ORDER BY
(SELECT (CASE
WHEN SUM(preco_machos) > SUM(preco_femeas) THEN 'preco_machos'
WHEN SUM(preco_machos) < SUM(preco_femeas) THEN 'preco_femeas'
END) AS coluna
from anuncio)
Como estes dados saíram ?!
Como estes dados saíram ?!
Foi gerado a lista de acordo com a ordem das somas.
Beleza, agora entendi, não sabia que uma síntaxe destas funcionava !
Beleza, agora entendi, não sabia que uma síntaxe destas funcionava !
Pois é funcionou. E isto era só uma parte da consulta, a consulta em si é enorme , cheia de INNER JOIN, Case e etc..
mas é muito bom contar com o apoio da comunidade.
SELECT *
FROM anuncio
ORDER BY (CASE WHEN (preco_machos) > (preco_femeas) THEN preco_machos
WHEN (preco_machos) < (preco_femeas) THEN preco_femeas END)