Можете да опитате ORDER BY (done asc, aux desc)
където aux се изчислява с CASE
за получаване на приоритет или дата въз основа на стойността на done
(може да се наложи да ги приведете към един и същ тип, за да се поберат в същия израз, например да приведете датата към подходящ целочислен ден).
Например:
SELECT * FROM tab
ORDER BY done desc,
case done
when 0 then prio
else to_days(thedate)
end desc;