当主要顺序是一个Case语句时,SQL Order By底部的空白?

时间:2016-11-23 21:07:19

标签: sql sql-order-by

我想ORDER BY列出结果底部空白的项目,但主要的顺序是一个案例陈述。

所以,我的主要Order By子句就是:

//

为此,我想应用以下案例,以便空白到底:

ORDER BY CASE WHEN pub = 1 THEN title ELSE t.othertitle END;

问题是我无法嵌入CASE语句。

如何做到这一点?

谢谢!

4 个答案:

答案 0 :(得分:1)

您没有指定DBMS,因此这是ANSI SQL:

ORDER BY nullif(CASE WHEN pub = 1 THEN title ELSE t.othertitle END, '') NULLS LAST

答案 1 :(得分:0)

您实际上可以嵌入案例陈述

ORDER BY CASE COALESCE(CASE pub WHEN 1 THEN title ELSE t.othertitle END, '') WHEN '' THEN 1 ELSE 0 END

答案 2 :(得分:0)

您可以明确地执行此操作:

ORDER BY (CASE WHEN pub = 1 AND title = '' THEN 1
               WHEN pub <> 1 AND t.othertitle = '' THEN 1
               ELSE 2
          END) DESC,
         (CASE WHEN pub = 1 THEN title ELSE t.othertitle END)

答案 3 :(得分:-2)

在构造它以返回INT时,Case语句只能(?)包含在Order中。创建您想要的任何类型的排序逻辑,但要确保它按升序返回INT:

string