Enklare:
SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Hur?
Postgres har en riktig boolean typ (till skillnad från vissa andra RDBMS). Du kan beställa efter den precis som med vilken annan datatyp som helst. Och det kan vara NULL som alla andra datatyper. Standard sorteringsordning är:
FALSE (0)
TRUE (1)
NULL
(sort IS NOT DISTINCT FROM -1) utvärderas till FALSE för alla värden utom -1 - som utvärderar TRUE och sorterar sist. Lägg bara till sort som sekundär ORDER BY objekt.
Motsvarande alternativ:
SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
db<>spela här
Gammal sqlfiddle