我收到错误:ORA-00907: missing right parenthesis
,但我找不到错误的东西。
(select listagg(sp.name
||' : '||
(case when count(distinct sp.name) < 1 then NULL else szf.piece END) as cou_1, ',')
WITHIN GROUP (ORDER BY sp.name,cou_1)
from sk_positions sp, sk_stock_f SZF, sk_stock SZ
where SZF.CODE_ID =SK.ID AND SP.RID = SZF.RID_U AND SZF.ID_SZ = SZ.ID
and sp.sk_u = (%sk%) and SZF.piece != 0)
我想,我在
listagg - case
有问题.
最佳答案
错误在这里:
szf.piece END) as cou_1
^
您不能为子表达式设置别名,而只能为列的完整表达式设置别名。在
Listagg
中,它应该在 within group ()
之后做完了。像这样的东西
WITHIN GROUP (ORDER BY sp.name,cou_1) as cou_1
关于sql - 带case语句的-listagg的正确形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54232252/