Oracle SQL ORA-00907:CASE语句中缺少右括号错误

Oracle SQL ORA-00907:CASE语句中缺少右括号错误,sql,oracle,case-statement,Sql,Oracle,Case Statement,我正在使用select子句中的以下CASE语句执行查询: select (case instr(listagg(D.first_name, ',') within group (order by D.first_name), ',') when 0 then substr(listagg(D.first_name, ',') within group (order by D.first_name), 1) else substr(listagg(D.first_name,

我正在使用select子句中的以下CASE语句执行查询:

select (case instr(listagg(D.first_name, ',') 
    within group (order by D.first_name), ',')
when 0 
then substr(listagg(D.first_name, ',') 
    within group (order by D.first_name), 1)
else substr(listagg(D.first_name, ',') 
    within group (order by D.first_name), 1, instr(listagg(D.first_name, ',') 
    within group (order by D.first_name), ',') - 1) end) Advisor1FName
from ....
SQL开发人员抛出ORA-00907缺少右键错误


出什么事了?如果您有任何帮助,我们将不胜感激。

将整个listag函数括在括号中即可解决此问题。奇怪的是,他们被要求,但这就是解决问题的原因

所以

变成

substr((listagg(D.first_name, ',') 
    within group (order by D.first_name)), 1)

看起来不错。您可以尝试将所有内容替换为*并再次尝试确保我们看到的减法有问题可能在
案例
@Jens结尾缺少
结束
。\n抱歉,复制时“结束”关键字可能已消失。“end”确实存在于查询中,同样的问题也存在。我正在回滚您的编辑。添加“已解决”并解决您的问题不是StackOverflow的工作原理(它是一个“问答”网站,这意味着一个问题被发布,然后在标有“您的答案”的空间中得到回答)。如果你想为未来的读者发布解决方案,你可以;您甚至可以自己接受它,认为它是正确的。:-)
substr((listagg(D.first_name, ',') 
    within group (order by D.first_name)), 1)