-
18-09-2019 - |
题
使用一个情况下-然后块,我需要选择如何对了我SQL2008查询,通过 [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,然后我们就会了 通过(null,r.日desc).
- 如果没有,我们会 为了通过(r.状况r.日desc)
使用的情况下达到"项目"的一个新的价值,为排序。
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的评论。
不隶属于 StackOverflow