| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Сортировка с помощью CASE |
| Автор: vahitov 26.2.2006, 09:24 |
| Задача такая: мне надо вернуть из хранимой процедуры записи, отсортированные по полям. Я это реализую следующим запросом: IF @sortOrder = 'ASC' BEGIN SELECT F.[Title], F.[Hits] FROM File F ORDER BY CASE @sortColumn WHEN 'Title' THEN F.[Title] END, CASE @sortColumn WHEN 'Hits' THEN F.[Hits] END ASC END ELSE IF @sortOrder = 'DESC' BEGIN SELECT F.[Title], F.[Hits] FROM File F ORDER BY CASE @sortColumn WHEN 'Title' THEN F.[Title] END, CASE @sortColumn WHEN 'Hits' THEN F.[Hits] END DESC END Причем поля Hits и Title разных типов. В результате этого адекватно происходит сортировка только по полю, указанному в самом последнем CASE-е, т.е. если я сортирую по полю Hits, то все работает правильно, а если сортирую по полю Title то не происходит сортировки не по какому полю. Может кто-то обяснит почему это так или как сделать правильно? |
| Автор: vahitov 26.2.2006, 13:37 |
| Задача решена. Кому интересно привожу решение: IF @sortOrder = 'ASC' BEGIN SELECT F.[Title], F.[Hits] FROM File F ORDER BY CASE @sortColumn WHEN 'Title' THEN F.[Title] END ASC, CASE @sortColumn WHEN 'Hits' THEN F.[Hits] END ASC END ELSE IF @sortOrder = 'DESC' BEGIN SELECT F.[Title], F.[Hits] FROM File F ORDER BY CASE @sortColumn WHEN 'Title' THEN F.[Title] END DESC, CASE @sortColumn WHEN 'Hits' THEN F.[Hits] END DESC END |