На самом деле вы можете заставить его работать даже с ORDER BY.
Просто нужно немного обмануть в инструкции order by - мы используем оператор case и заменяем значение заголовка некоторым другим значением, которое гарантировано сортировать сначала в списке (очевидно, это зависит от типа поля и от того, сортируете ли вы ASC или DESC)
Допустим, у вас есть три поля, имя (varchar), is_active (bool), date_something_happens ( дата), и вы хотите отсортировать второй второй по убыванию:
select
'name'
, 'is_active' as is_active
, date_something_happens as 'date_something_happens'
union all
select name, is_active, date_something_happens
from
my_table
order by
(case is_active when 'is_active' then 0 else is_active end) desc
, (case date when 'date' then '9999-12-30' else date end) desc