在"Order by"子句中使用"Case When",根据多个列对结果集进行排序

Vah*_*iri 2 sql-server sql-server-2008

我想在Order By子句中使用Case When但我想在多个列上对结果集进行排序.当我使用以下语法时,我得到语法错误.

Select * From MyTable
   ORDER BY 
     CASE 
        WHEN @ColumnName='NameAndId' THEN Name,Id
        WHEN @ColumnName='TitleAndId' THEN Title,Id
    END Desc
Run Code Online (Sandbox Code Playgroud)

有谁知道正确的语法?

谢谢

Mik*_*son 6

您的案例只在两者之间切换Name,Title因此您可以移出Idcase语句.

不确定要申请的地方desc.这将按顺序NameTitle下降顺序排列,并且将按Id升序排序.

Select * From MyTable
   ORDER BY 
     CASE 
        WHEN @ColumnName='NameAndId' THEN Name
        WHEN @ColumnName='TitleAndId' THEN Title
     END Desc, Id
Run Code Online (Sandbox Code Playgroud)