0

我之前尝试过使用 LISTAGG 函数,但是由于输出可能会很长,甚至可能超过 4000 个字节。我一直收到字符串连接结果太长的错误。我关注了 Tim 引用的关于返回 CLOB 的字符串聚合函数的实现的 AskTom 页面。

           CREATE TABLE FINAL_LOG AS
           SELECT SESSION_DT, C_IP, CS_USER_AGENT,
           concat_all_ot(WEB_LINK, ' ')
           WITHIN GROUP(ORDER BY C_IP, CS_USER_AGENT) AS "WEBLINKS"
               FROM weblog_views
               GROUP BY C_IP, CS_USER_AGENT, SESSION_DT
               ORDER BY SESSION_DT

为此,我收到以下错误,

SQL 错误:ORA-00923:FROM 关键字未在预期位置找到

谁能告诉我我哪里出了问题?

4

1 回答 1

5

如果您使用的是用户定义的聚合函数,则可能需要省略该WITHIN GROUP子句。ORDER BY在语句中指定子句也没有意义,CREATE TABLE因为堆组织表中的数据本质上是无序的。此外,如果您使用该链接中的代码,则聚合函数的名称为concat_all. concat_all_ot是对象类型。所以你想要类似的东西

CREATE TABLE FINAL_LOG  AS   
  SELECT SESSION_DT, 
         C_IP, 
         CS_USER_AGENT,
         concat_all( concat_expr(WEB_LINK, ' ') ) AS "WEBLINKS"
    FROM weblog_views    
   GROUP BY C_IP, 
            CS_USER_AGENT, 
            SESSION_DT
于 2012-12-10T11:57:08.600 回答