Возник вопрос: можно ли управлять порядком сортировки (asc/desc) при помощи параметра из прикладного приложения? Типа order by x :direction. Ответ - да!, но не совсем так. Признаюсь сразу: решение не мое, а команды Тома Кайта; то ли Крис, то ли Коннор - но я разобрался и немного переформулировал. В первом приближении, конструкция вида order by x :direction корректной не является, но, как говорится, мы поняли, что нужно заказчику. Вначале, как всегда, запишем генератор данных: select level as x from dual connect by level <= 5
; 1
2
3
4
5 Запишем прямую сортировку: with t as (
select level as x from dual connect by level <= 5
)
select x from t
order by x asc
; 1
2
3
4
5 Запишем обратную сортировку: with t as (
select level as x from dual connect by level <= 5
)
select x from t
order by x desc
; 5
4
3
2
1 Запишем обе сортировки вместе: with t as (
select level as x from dual connect by level <= 5
)
select x from t
order by
x asc,
x desc
; Понятно, что всегда будет срабатывать первая - а