При написании хранимой процедуры в MS SQL Server 2008 R2 я хочу избежать использования DSQL ...
Я бы хотел, чтобы метод сортировки (ASC или DESC) был условным.
Теперь с числовым столбцом я бы просто использовал оператор case и отрицал значение для эмуляции ASC или DESC ...
То есть:
... ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [NumericColumn] ELSE -[NumericColumn] END ASC
Какой метод подходит для этого с альфа-столбцом?
РЕДАКТИРОВАТЬ: Я подумал об умном способе, но он кажется ужасно неэффективным ... Я мог бы вставить свой упорядоченный альфа-столбец во временную таблицу с автономным номером, а затем отсортировать по автономному номеру, используя описанный выше метод.
EDIT2:
Что вы, ребята, думаете об этом подходе?
ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [AlphaColumn] ELSE '' END ASC,
CASE @OrderAscOrDesc WHEN 0 THEN '' ELSE [AlphaColumn] END DESC
Я не знаю, является ли принудительная сортировка по однородному столбцу более эффективной, чем получение чисел из отсортированных строк, хотя