Pedido da Oracle por para diferentes condições

Tenho uma consulta e gostaria de fazer dois tipos de pedidos com base em uma condição.

Por exemplo, se um campo for NULL, preciso fazer um pedido e, se não for, tenho que fazer outro pedido. Como posso fazer isso ?

select *
  from table_1 t
  order by (if  t.field1 is null then
                   order by t.field2 DESC, field3 ASC
            else 
                  order by t.field4 ASC, field5 DESC)

Este é um código de exemplo: eu quero fazer pedidos diferentes (ASC / DESC e colunas diferentes), com base no valor de FIELD1

EXEMPLO

CONDICIONAL

ID FIELD1  FIELD2  FIELD3  FIELD4  FIELD5
1   1       2       3       4       5
2   NULL    6       7       8       9

DADOS

ID PARENT_ID DATA1 DATA2 DATA3
1  1         X     Y     J
2  1         Z     W     U
3  2         XY    YX    O
4  2         ZW    WZ    I

select d.*
  from data d, conditional c
 where d.parent_id = c.id
   and d.parent_id = 1
order by
       case 
           when c.field1 is null then
              data1 asc, data2 desc
           else
              data3 asc, data1 desc
       end

Neste exemplo, eu seleciono as linhas de dados UM e DOIS (as linhas que têm o ID pai = 1). Agora que tomei essa decisão, desejo orther as colunas DATA com base no valor da coluna CONDICTIONAL.FIELD1. Espero que agora esteja mais limpo.

Certifique-se de que esta consulta não funcione, mas é "o que eu precisarei".