Oracle中使用LISTAGG报错‘Right Parameter’问题求助
解决Oracle LISTAGG函数的"Right Parameter"错误
你的SQL报错是因为Oracle的LISTAGG函数必须包含WITHIN GROUP (ORDER BY ...)子句,这是语法要求的必填部分,缺少它就会触发参数错误。
修正后的SQL如下:
SELECT listagg(ODA_CdiDispositivoAcesso, ';') WITHIN GROUP (ORDER BY ODA_CdiDispositivoAcesso) FROM DispositivosAcessosOcors INNER JOIN DispositivosAcessos ON (ODA_CdiDispositivoAcesso = DIS_CdiDispositivoAcesso) WHERE ODA_CdiTpOcorrenciaDispositivo IN (500) AND DIS_OplDesativado = 0 AND ODA_DtdInicio <= sysdate AND (ODA_DtdFim IS NULL OR ODA_dtdFim >= sysdate)
补充说明:
WITHIN GROUP (ORDER BY 列名)用于指定合并结果的排序规则,你可以根据需求替换成其他字段(比如日期、主键等);- 如果需要去重合并,Oracle 12cR2及以上版本支持在LISTAGG中加入
DISTINCT,写法为listagg(DISTINCT ODA_CdiDispositivoAcesso, ';') WITHIN GROUP (...)。
内容的提问来源于stack exchange,提问作者Bruno Souza
相关产品推荐
相关产品推荐

