Написание хранимой процедуры в MS SQL Server 2008 R2, я хочу, чтобы избежать использования DSQL ...Условный SQL ORDER BY ASC/DESC для альфа-столбцов
Я хотел бы метод сортировки (ASC или DESC) быть условна.
Теперь, с числовым столбцом я бы просто использовать случай заявление и свести на нет значения для эмуляции ASC или DESC ... То есть:
... ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [NumericColumn] ELSE -[NumericColumn] END ASC
Что является подходящим методом для этого с альфа-колонка?
EDIT: Я думал об умном способе, но кажется ужасно неэффективным ... Я мог бы вставить свой упорядоченный альфа-столбец в таблицу temp с помощью автонабора, а затем отсортировать по автономеру, используя метод, описанный выше.
EDIT2:
Что вы, ребята, думаете о таком подходе?
ORDER BY CASE @OrderAscOrDesc WHEN 0 THEN [AlphaColumn] ELSE '' END ASC,
CASE @OrderAscOrDesc WHEN 0 THEN '' ELSE [AlphaColumn] END DESC
Я не знаю, заставляя своего рода на единой колонны является более эффективным, чем выводе чисел из отсортированных строк, хотя
умный, очень похоже на мое решение, которое я разместил в редактировании. Я надеюсь на что-то более эффективное, чем на получение другой сортированной копии данных, чтобы создать числовой порядок сортировки .... – Matthew
@Matthew PK: вам либо нужно подставить строку для соответствующего номера, либо добавить фиктивные сортировки для не- .реальные случаи. Ничего * на самом деле * умный, я боюсь – gbn
Что вы думаете о «двух предложениях ORDER BY» в моем втором редактировании? – Matthew