Anda dapat mencoba ORDER BY (done asc, aux desc)
di mana aux dihitung dengan CASE
untuk menghasilkan prioritas atau tanggal berdasarkan nilai done
(Anda mungkin harus mentransmisikannya ke jenis yang sama agar sesuai dengan ekspresi yang sama, misalnya memasukkan tanggal ke nomor hari bilangan bulat yang sesuai).
Misalnya:
SELECT * FROM tab
ORDER BY done desc,
case done
when 0 then prio
else to_days(thedate)
end desc;