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".