ordem condicional pode ser executada com
CASE , como aqui:select *
from test
order by
flag
, case when flag then date end desc
, case when not flag then date end asc
CASE , como aqui:select *
from test
order by
flag
, case when flag then date end desc
, case when not flag then date end asc