Enklere:
SELECT *
FROM tasks
ORDER BY (sort IS NOT DISTINCT FROM -1), sort;
Hvordan?
Postgres har en ordentlig boolean type (i modsætning til nogle andre RDBMS). Du kan bestille efter det ligesom efter enhver anden datatype. Og det kan være NULL ligesom enhver anden datatype. Standard sorteringsrækkefølge er:
FALSE (0)
TRUE (1)
NULL
(sort IS NOT DISTINCT FROM -1) evalueres til FALSE for alle værdier undtagen -1 - som evaluerer TRUE og sorterer sidst. Bare tilføj sort som sekundær ORDER BY vare.
Tilsvarende alternativ:
SELECT *
FROM tasks
ORDER BY (sort IS DISTINCT FROM -1) DESC, sort;
db<>spil her
Gamle sqlfiddle