Заказ Oracle по разным условиям
У меня есть запрос, и я хотел бы сделать два вида заказа на основе условия.
Например, если поле NULL, мне нужно сделать заказ, а если нет, я должен сделать еще один заказ. Как я могу это сделать?
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)
Это пример кода: я хочу сделать другой порядок (ASC / DESC и разные столбцы), в зависимости от значения FIELD1
ПРИМЕР
Условный
ID FIELD1 FIELD2 FIELD3 FIELD4 FIELD5
1 1 2 3 4 5
2 NULL 6 7 8 9
ДАННЫЕ
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
В этом примере я выбираю строки данных один и два (строки с родительским идентификатором = 1). Теперь, когда я принял это решение, я хочу изменить столбцы DATA на основе значения столбца CONDICTIONAL.FIELD1. Я надеюсь, что теперь более чисто.
Конечно, этот запрос до сих пор работает, но это «то, что мне нужно».