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;