Условный SQL ORDER BY ASC / DESC для альфа-столбцов

Написав хранимую процедуру в MS SQL Server 2008 R2, я хочу избежать использования DSQL ...

Мне нужен метод сортировки (ASC или DESC), чтобы быть условным.

Теперь, с числовым столбцом, я бы просто использовал оператор case и отрицал значение для имитации ASC или DESC ... То есть:

... ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [NumericColumn] ELSE -[NumericColumn] END ASC

Каков подходящий метод для этого с альфа-столбцом?

РЕДАКТИРОВАТЬ: Я подумал об умном способе, но он кажется ужасно неэффективным ... Я мог бы вставить свой заказанный альфа-столбец во временную таблицу с помощью автонумерацию, затем выполните сортировку по автонуммеру, используя метод, описанный выше.

РЕДАКТИРОВАТЬ2:

Что вы, ребята, думаете об этом подходе?

ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [AlphaColumn] ELSE '' END ASC,
CASE @OrderAscOrDesc WHEN 0 THEN '' ELSE [AlphaColumn] END DESC

Я не знаю, более эффективна ли принудительная сортировка однородного столбца, чем получение чисел из отсортированных строк, хотя

14
задан Martijn Pieters 30 July 2014 в 17:44
поделиться