我正在尝试按字母顺序排序列表,除非该行有一个组,然后我想要使用该组。 grouped
也可以是NULL或空字符串。
例如:
name grouped
a NULL
b
c a
d
将被命令为:
a,c,b,d
这就是我所拥有的
SELECT name FROM table ORDER BY COALESCE(grouped, name)
我也试过了:
SELECT name FROM table ORDER BY CASE WHEN LENGTH(grouped) = 0
THEN name ELSE grouped END
但是这些解决方案都没有正常工作,他们最终会首先显示所有分组的项目,而不是像我期望的那样与名称混合。
答案 0 :(得分:1)
由于您混合使用null和空字符串,请执行以下操作:
SELECT name
FROM table
ORDER BY COALESCE(grouped, '') || name;
这会将空值更改为空字符串,将空字符串保留为空字符串,并连接名称。
答案 1 :(得分:1)
SELECT *
FROM MyTable
ORDER BY CASE COALESCE(grouped, '')
WHEN '' THEN name
ELSE grouped
END,
COALESCE(grouped, '') <> ''