Peut utiliser SIGN pour trier les nombres positifs vers le haut, puis prendre la valeur absolue avec ABS pour obtenir l'ASC/DESC souhaité.
SELECT * FROM theTable
ORDER BY SIGN(col) DESC, ABS(col)
MODIFIER
Comme Nahuel l'a souligné, ce qui précède triera les 0 au milieu entre le positif et le négatif. Pour les regrouper à la place avec les positifs, vous pouvez utiliser un CASE
à la place (ou, si votre colonne n'est que des entiers, le légèrement magique SIGN(col + 1)
)
SELECT * FROM theTable
ORDER BY
CASE WHEN col >= 0 THEN 1 ELSE 2 END,
ABS(col)