SELECT qu.id, qu.belong, qu.type, qu.title, qu.flag,
(SELECT wm_concat(as_num || '-' || as_info)
FROM QUESTION_ANSWER quas
WHERE quas.qu_id = qu.qu_id
order by quas.as_sort asc ) AS qu_answers
FROM QUESTION qu;
* ORA-00907: 缺失右括号
* 00907. 00000 - "missing right parenthesis"
* *Cause:
* *Action:
想用来做视图,使用wm_concat合并子表内容并排序,加了排序order by quas.as_sort asc后报ORA-00907: 缺失右括号,
不加order by quas.as_sort asc这句的话正常,请问怎么解决
4 个解决方案
#1
很多情况下,子查询中不能有order by。
这个语句,可以想办法改成left join。
这个语句,可以想办法改成left join。
#2
不知道啥原因,不过加不加order by 排序,结果都不变
order by 是对查询后的结果集排序,不是先排序,再查询
order by 是对查询后的结果集排序,不是先排序,再查询
#3
wm_concat 函数不支持排序,也就是拼接出来的结果都不固定。
如果你是 11g 的库,建议使用 listagg 函数,这个可以排序。
如果你是 11g 的库,建议使用 listagg 函数,这个可以排序。
#4
SELECT a.id,
a.belong,
a.type,
a.title,
a.answer,
a.flag,
(select listagg(b.as_num || '-' || b.as_info, ',') within group(order by b.as_sort)
from question_answer b
where b.qu_id = a.qu_id
) as qu_answers
from question a;
谢谢各位,根据版主提醒用listagg实现了
a.belong,
a.type,
a.title,
a.answer,
a.flag,
(select listagg(b.as_num || '-' || b.as_info, ',') within group(order by b.as_sort)
from question_answer b
where b.qu_id = a.qu_id
) as qu_answers
from question a;
谢谢各位,根据版主提醒用listagg实现了
#1
很多情况下,子查询中不能有order by。
这个语句,可以想办法改成left join。
这个语句,可以想办法改成left join。
#2
不知道啥原因,不过加不加order by 排序,结果都不变
order by 是对查询后的结果集排序,不是先排序,再查询
order by 是对查询后的结果集排序,不是先排序,再查询
#3
wm_concat 函数不支持排序,也就是拼接出来的结果都不固定。
如果你是 11g 的库,建议使用 listagg 函数,这个可以排序。
如果你是 11g 的库,建议使用 listagg 函数,这个可以排序。
#4
SELECT a.id,
a.belong,
a.type,
a.title,
a.answer,
a.flag,
(select listagg(b.as_num || '-' || b.as_info, ',') within group(order by b.as_sort)
from question_answer b
where b.qu_id = a.qu_id
) as qu_answers
from question a;
谢谢各位,根据版主提醒用listagg实现了
a.belong,
a.type,
a.title,
a.answer,
a.flag,
(select listagg(b.as_num || '-' || b.as_info, ',') within group(order by b.as_sort)
from question_answer b
where b.qu_id = a.qu_id
) as qu_answers
from question a;
谢谢各位,根据版主提醒用listagg实现了