PostgreSQL условный множественный заказ по asc / desc - PullRequest
0 голосов
/ 30 марта 2020

Я хочу заказать по нескольким столбцам условно, а не только по одному типу заказа для всех столбцов (как видно здесь ).

Я хочу выполнить 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;

Возможно ли это с помощью аналогичного подхода или необходим совершенно другой?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...