Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Сортировка по нескольким полям в зависимости от условия  [new]
MLans
Member

Откуда:
Сообщений: 396
Подскажите, как лучше провести сортировку по нескольким полям и по возрастаещему / убывающему порядку, в зависимости от условий?

просто по нескольким колонкав все просто

case @sortcolumn1
when 'column1' then column1
when 'column1' then column2
end
case @sortcolumn2
when 'column1' then column1
when 'column1' then column2
end


а вот как добавить еще опцию ASX / DESC?
21 дек 15, 12:39    [18587922]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по нескольким полям в зависимости от условия  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21253
Для чисельных просто:
case @sortcolumn1
when 'column1 ASC' then column1
when 'column1 DESC' then -column1
when 'column2 ASC' then column2
when 'column2 DESC' then -column2
end

Со строковыми сложнее...
Универсально: добавить вычисляемую колонку порядка (RANK() OVER) - тут можно кейсить как угодно,- и сортирить уже по ней.
21 дек 15, 12:45    [18587976]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по нескольким полям в зависимости от условия  [new]
Glory
Member

Откуда:
Сообщений: 104751
MLans
а вот как добавить еще опцию ASX / DESC?


Писать отдельный CASE на каждые столбец и направление упорядочивание
21 дек 15, 12:46    [18587988]     Ответить | Цитировать Сообщить модератору
 Re: Сортировка по нескольким полям в зависимости от условия  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8839
В таких случаях эффективнее выполнять сортировку клиентским приложением.
21 дек 15, 13:31    [18588262]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить