sql - ORDER BY 几列中的 CASE

标签 sql sql-server-2008 t-sql sql-order-by case-when

使用 case-then block ,我需要选择如何对 SQL 2008 查询进行排序,按 [status] ASC, [date] DESC或者只是 [date] DESC .

我只知道如何使用一列:

SELECT *
FROM table
ORDER BY
    CASE WHEN @flag = 0
        THEN R.[date] END DESC,
    CASE WHEN @flag = 1
        THEN R.[status] END ASC

如何在第二个案例中使用两列?

最佳答案

  • 如果您的标志为 0,那么我们将订购 by (null, r.date desc)。
  • 如果没有,我们会 排序依据 (r.Status, r.date desc)

使用 CASE 表达式“投影”新的排序值。

SELECT *
FROM table
ORDER BY
  CASE WHEN @flag = 0 THEN r.Status ELSE null END,
  r.[date] desc

关于sql - ORDER BY 几列中的 CASE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1291208/

相关文章:

java - JPA 标准 JOIN : what does {oj . ..} 在 SQL 中意味着什么?

SQL 分组依据和窗口函数

sql-server - SQL Server 中的非确定性数据类型

SQL 与最新记录左连接

MySQL 搜索一个字母单词

sql - odi列谱系查询

java - 更新了表,但没有返回正确的值

sql - 如何根据 SQL Server 2008 中的特定参数返回所需的手动值

sql - 使用 XML 数据类型读取存储在 SQL Server 2008 R2 中的 XML 文档

sql - 处理存储过程输出