使用 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/