Написав хранимую процедуру в 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
Я не знаю, более эффективна ли принудительная сортировка однородного столбца, чем получение чисел из отсортированных строк, хотя