Eenvoudiger:
SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Hoe?
Postgres heeft een juiste boolean type (in tegenstelling tot sommige andere RDBMS). U kunt er op bestellen net als bij elk ander gegevenstype. En het kan NULL zijn zoals elk ander gegevenstype. Standaard sorteervolgorde is:
FALSE (0)
TRUE (1)
NULL
(sort IS NOT DISTINCT FROM -1) evalueert tot FALSE voor alle waarden behalve -1 - die TRUE . evalueert en sorteert als laatste. Voeg gewoon sort toe als secundaire ORDER BY artikel.
Gelijkwaardig alternatief:
SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
db<>viool hier
Oude sqlfiddle