Я хочу заказать по нескольким столбцам условно, а не только по одному типу заказа для всех столбцов (как видно здесь ).
Я хочу выполнить sh что-то вот так (недействительно sql, поскольку я не знаю, как это сделать, просто пытаюсь донести идею):
-- assume this is wrapped by a function with a `_sort` string argument
select * from t_test
order by
case when _sort='sort_type_1' then (
col1 desc, col2 asc, col3 desc, col4 asc)
case when _sort='sort_type_2' then (
col1 asc, col2 asc, col3 desc, col4 asc)
case when _sort='sort_type_3' then (
col1 desc, col2 desc, col3 asc, col4 asc)
else (
col4 desc, col3 asc)
end;
Обратите внимание, что порядок col1
, col2
, col3
, col4
имеет значение, поэтому я не мог сделать что-то вроде этого:
select * from t_test
order by
col2, col4
case when _sort='sort_type_1' then (col1, col3) end desc;
Возможно ли это с помощью аналогичного подхода или необходим совершенно другой?