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

标签 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

有人知道正确的语法吗?

谢谢

最佳答案

您的案例仅在 NameTitle 之间切换,因此您可以将 Id 移出 case 语句。

不确定要在何处应用 desc。这将按 NameTitle 降序排列,对于领带,它将按 Id 升序排列。

Select * From MyTable
   ORDER BY 
     CASE 
        WHEN @ColumnName='NameAndId' THEN Name
        WHEN @ColumnName='TitleAndId' THEN Title
     END Desc, Id

关于sql-server - 在 "Case When"子句中使用 "Order by"根据多列对结果集进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8642878/

相关文章:

sql - 在单独的 CTE 中调用具有不同参数的多语句 TVF 显示错误结果

sql - 使用单个 JOIN Select 语句替代/替代 UNION

sql-server - CASE(包含)而不是 equal 语句

sql-server - SQL Server View 中的模拟?

mysql - 从现有的 MySql 数据库创建 SQL Server 数据库

java - 统计特定区域的所有客户的客户数量

sql - 这可以在 SQL 2008 中完成吗?

c# - 将字符串数组的值插入 SQL 数据库

sql-server-2008 - SQL Server - 根据另一列值更新列

c# - 连接数据库的正确用法是什么