Sql 按几列顺序排列的大小写

Sql 按几列顺序排列的大小写,sql,sql-server-2008,tsql,sql-order-by,case-when,Sql,Sql Server 2008,Tsql,Sql Order By,Case When,使用case-then块,我需要选择如何按[status]ASC、[date]DESC或只按[date]DESC排序SQL 2008查询 我只知道如何使用一列: SELECT * FROM table ORDER BY CASE WHEN @flag = 0 THEN R.[date] END DESC, CASE WHEN @flag = 1 THEN R.[status] END ASC 如何在第二种情况下使用这两个列? 如果你的旗帜是0,那

使用case-then块,我需要选择如何按
[status]ASC、[date]DESC
或只按
[date]DESC
排序SQL 2008查询

我只知道如何使用一列:

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(空,r.date desc)
  • 如果没有,我们将 订购人(r.状态,r.日期说明)
使用大小写表达式“投影”排序的新值

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

通常,要放入条件排序,只需重复CASE语句

SELECT *
FROM table
ORDER BY
    CASE WHEN @flag = 0 THEN R.[date] END DESC,
    CASE WHEN @flag = 0 THEN R.[somethingelse] END ASC,
    CASE WHEN @flag = 1 THEN R.[status] END ASC
;
但在你的例子中,“日期”的重叠意味着你可以像大卫B的评论那样简化它