Kan bruge SIGN for at sortere de positive tal til toppen, tag derefter den absolutte værdi med ABS for at få den ønskede ASC/DESC.
SELECT * FROM theTable
ORDER BY SIGN(col) DESC, ABS(col)
REDIGER
Som Nahuel påpegede, vil ovenstående sortere 0'er til midten mellem positive og negative. For i stedet at gruppere dem med de positive, kan du bruge en CASE
i stedet (eller, hvis din kolonne kun er heltal, den let magiske SIGN(col + 1)
)
SELECT * FROM theTable
ORDER BY
CASE WHEN col >= 0 THEN 1 ELSE 2 END,
ABS(col)