KUROL3 3 Denunciar post Postado Setembro 11, 2011 Olá estou com uma situação simples porem o select nao funciona como esperado... //o comando SELECT count(cidade) as total, cidade FROM lancamentos GROUP BY cidade order by total DESC, cidade ASC gostaria que a ordem ficasse assim "sei que não funciona mas so para dar a idéia" SELECT count(cidade) as total, cidade FROM lancamentos GROUP BY cidade IF (total > 40, total DESC, cidade ASC) ///valeu marco Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 11, 2011 Creio que não vá dar certo com este if aí não, realmente precisa dele ? Compartilhar este post Link para o post Compartilhar em outros sites
KUROL3 3 Denunciar post Postado Setembro 11, 2011 Olá Andrey, sei que não da certo, foi mais para exibir a logica. agora se preciso dele! é extremamente necessário pois a cidade de maior interesse em ordem alfabetica fica em baixo de todas obrigado pela resposta marco Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 11, 2011 Faz assim .. SELECT count(cidade) as total, cidade FROM lancamentos ORDER BY total DESC, cidade ASC GROUP BY cidade Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 11, 2011 tenta o CASE order by (case when total > 40 then total else 0 end) DESC, cidade ASC Compartilhar este post Link para o post Compartilhar em outros sites
KUROL3 3 Denunciar post Postado Setembro 11, 2011 mota a idéia é perfeita so que agora deu um erro muito estranho: Unknown column 'total' in 'order clause' que eu saiba e tenho usado,,,, pode usar alias no order by... so que deu esse erro.. abraços marco tenta o CASE order by (case when total > 40 then total else 0 end) DESC, cidade ASC Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 11, 2011 order by (case when count(cidade) > 40 then count(cidade) else 0 end) DESC, cidade ASC Compartilhar este post Link para o post Compartilhar em outros sites
KUROL3 3 Denunciar post Postado Setembro 12, 2011 tentei também exatamente isso... e apareceu o seguinte erro: Invalid use of group function Marco Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Setembro 12, 2011 select total,cidade from ( SELECT count(cidade) as total, cidade FROM lancamentos group by cidade ) order by (case when total > 40 then total else 0 end) DESC, cidade ASC Compartilhar este post Link para o post Compartilhar em outros sites
KUROL3 3 Denunciar post Postado Setembro 12, 2011 agora sim funcionow... eu havia feito um having union havia funcinado, mas o seu ficou mais inteligente.. abraços marco Compartilhar este post Link para o post Compartilhar em outros sites
Andrey Knupp Vital 136 Denunciar post Postado Setembro 12, 2011 Interessante, não sabia que dava pra usar case / when dessa forma. Compartilhar este post Link para o post Compartilhar em outros sites