Конструкция order by запроса Oracle позволяет упорядочить выбор данных. Ее можно использовать и для более сложных задач. Предположим, у нас есть таблица состояний некоторого процесса, состоящая из двух столбцов: идентификатор и формулировка состояния. Как обычно, для примера мы не будем создавать реальную таблицу, а воспользуемся генератором тестовых данных с конструкцией with: with statuses as
(
select 1 as id, 'Открытие заказа' as text from dual union all
select 2, 'Проверка заказа' from dual union all
select 3, 'Выполнение заказа' from dual union all
select 4, 'Оплата заказа' from dual union all
select 5, 'Закрытие заказа' from dual
)
select id, text from statuses
order by id
; 1 Открытие заказа
2 Проверка заказа
3 Выполнение заказа
4 Оплата заказа
5 Закрытие заказа - мы заполнили нашу таблицу очевидными состояниями процесса в очевидном порядке идентификаторов, по которым вывод и отсортировали. И все хорошо. Пока не оказалось, что для одной из ветвей нашего процесса состояние "Оплат