Bạn có thể thử ORDER BY (done asc, aux desc)
nơi aux được tính bằng CASE
để mang lại mức độ ưu tiên hoặc ngày dựa trên giá trị của done
(bạn có thể phải truyền chúng sang cùng một loại để phù hợp với cùng một biểu thức, ví dụ:truyền ngày thành một số nguyên ngày phù hợp).
Ví dụ:
SELECT * FROM tab
ORDER BY done desc,
case done
when 0 then prio
else to_days(thedate)
end desc;