我想ORDER BY列出结果底部空白的项目,但主要的顺序是一个案例陈述。
所以,我的主要Order By子句就是:
//
为此,我想应用以下案例,以便空白到底:
ORDER BY CASE WHEN pub = 1 THEN title ELSE t.othertitle END;
问题是我无法嵌入CASE语句。
如何做到这一点?
谢谢!
答案 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