我使用以下ORDER BY语句进行SQL查询:

ORDER BY SName, DateEnrolledTo desc

我需要将其更改为
ORDER BY
CASE WHEN @SortID='name' OR ISNULL(@SortID,'')=''
THEN SName, DateEnrolledTo desc END,
CASE WHEN @SortID ='Hroom'
THEN Hroom, DateEnrolledTo desc END

语法不正确,有人可以告诉我如何解决此问题吗?仅当我仅包含1列时,这才有效。我找不到遇到这种情况的任何问题。

最佳答案

由于任何 CASE 表达式也等于THEN之后的一个值,因此您可以指定一列(或任何其他valid expression):

ORDER BY
 CASE
  WHEN @SortID='name' OR ISNULL(@SortID,'')=''
   THEN SName
  WHEN @SortID ='Hroom'
   THEN Hroom END,
 DateEnrolledTo desc

09-26 03:49