Tenho uma situação em que desejo ordenar uma coluna em ordem crescente ou decrescente com base no valor de uma segunda coluna (em essência, se a coluna A for ímpar, classifique a coluna B em ordem crescente, caso contrário, em ordem decrescente). Exemplo:
A | B |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
2 | 4 |
2 | 5 |
2 | 6 |
3 | 7 |
3 | 8 |
3 | 9 |
seria classificado para
A | B |
---|---|
1 | 1 |
1 | 2 |
1 | 3 |
2 | 6 |
2 | 5 |
2 | 4 |
3 | 7 |
3 | 8 |
3 | 9 |
Isso é possível em uma única consulta SQL ou eu teria que resolver isso fora do banco de dados? Eu tenho cerca de 60 valores A diferentes, portanto, escrever uma consulta separada para cada valor A possível não é uma opção viável.
Tentei usar "ORDER BY b if (A%2=1, ASC, DESC)", que (sem surpresa) não funcionou.
No seu caso particular, provavelmente é mais fácil mapear b, para valores ímpares de a como:
Um pouco mais compacto e enigmático:
Para tipos em que esse mapeamento não é possível de maneira simples (digamos, string), outra opção é "atalho" a ordem asc ou desc como:
violino