我正在使用 Oracle SQL 开发人员版本 3.0.04。我尝试使用函数 LISTAGG
将数据分组在一起..
CREATE TABLE FINAL_LOG AS
SELECT SESSION_DT, C_IP, CS_USER_AGENT,
listagg(WEB_LINK, ' ')
WITHIN GROUP(ORDER BY C_IP, CS_USER_AGENT) "WEB_LINKS"
FROM webviews
GROUP BY C_IP, CS_USER_AGENT, SESSION_DT
ORDER BY SESSION_DT
但是,我不断收到错误消息,
SQL Error: ORA-01489: result of string concatenation is too long
我很确定输出可能超过 4000,因为这里提到的 WEB_LINK 是 url stem 和 url query 的串联值。
有什么办法可以绕过它还是有其他选择?
原文由 user1874311 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于聚合字符串可能超过 4000 字节,因此不能使用
LISTAGG
函数。您可能会创建一个 用户定义的聚合函数,该函数返回CLOB
而不是VARCHAR2
。在 Tim 从第一个讨论链接到的 原始 askTom 讨论 中,有一个用户定义的聚合示例返回CLOB
。