SQL错误:ORA-00923:找不到FROM关键字

use*_*311 0 sql oracle

我尝试过使用LISTAGG功能,但因为有一个可能性,即输出会很长,甚至可能超过4000个字节多..我一直得到错误字符串连接的结果是太长.我按照AskTom页面提到Tim引用了一个返回CLOB的字符串聚合函数实现.

           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
Run Code Online (Sandbox Code Playgroud)

为此,我收到以下错误,

SQL错误:ORA-00923:找不到FROM关键字

谁能告诉我这里哪里出错?

Jus*_*ave 5

如果您使用的是用户定义的聚合函数,则可能需要省略该WITHIN GROUP子句.由于堆组织表中的数据本质上是无序的,因此ORDER BYCREATE 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
Run Code Online (Sandbox Code Playgroud)