SQL Server Order To 具有大小写和多列

标签 sql sql-server

我有包含以下 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 列时,此方法才有效。我找不到任何存在这种情况的问题。

最佳答案

作为任何表达式CASETHEN yuo 可以指定一列(或任何其他 valid expression )之后,计算结果也为一个值:

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

关于SQL Server Order To 具有大小写和多列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25666771/

相关文章:

sql - 如何删除两个完全相同的行之一?

mysql - SQL 查询计算一列中值的总出现次数和另一列中的相对出现次数

mysql - 根据当前表和每个单独的行向 SQL SELECT 查询输出添加额外的列

sql - 如何在 vtiger 上修改管理员密码?

sql-server - 不允许从数据类型 varchar 到 varbinary(max) 的隐式转换。使用转换

.net - 如何更新多个 SQL Server 数据库架构

java - 在java中避免SQL注入(inject)

sql - 在 SQL Server 中对临时表使用 View 的优点是什么

c# - 什么时候将标志存储为位掩码比使用关联表更好?

c# - 如何使用 HH :mm:ss = 00:00:00 instead of 12:00:00? 设置日期时间