2011-04-06 114 views
8

我不确定这里发生了什么,主要是因为我从来没有使用过这个函数,但是当我在我们的Oracle 11g数据库上使用listagg函数时,它给了我一个未找到的ORA-00923 FROM关键字在哪里预期。ORACLE SQL listagg函数

这里是我的SQL

SELECT cdm.courses_id,cde.additional_resources, listagg (dm.delivery_method_desc, ',') 
WITHIN GROUP (ORDER BY dm.delivery_method_desc) delivery_methods 
FROM tablespace.course_de_delivery_methods cdm, 
     tablespace.course_distance_ed cde, 
     tablespace.delivery_methods dm 
WHERE cdm.courses_id = cde.courses_id 
AND cdm.delivery_methods_id = dm.delivery_methods_id 
GROUP BY cdm.courses_id 

我还没有线索,为什么这是打破。我正在关注所发现的示例here.

+0

看起来很好。你确定你是db是11g。您可以通过'v $ version版本中的select banner'来检查;' – 2011-04-06 16:18:38

回答

17

您使用的是11.1还是11.2? LISTAGG在11.2中引入,它在11.1中不可用。

您的SQL语句在11.2中看起来对我有效。但是你会在11.1中得到一个错误,而在11.1中ORA-00923看起来像是一个合理的错误。

+0

我运行了Conrad在注释中提到的查询,它看起来像我们正在运行11.1而不是11.2。谢天谢地,一旦时间到了,我会将其标记为答案。 – Micharch54 2011-04-06 16:23:08

+0

+1我没有意识到这是11.2的唯一的事情。如果我有11.1我会认为它应该工作。 – 2011-04-06 16:29:11

+0

这个错误也在11.2中。 Oracle数据库11g企业版版本11.2.0.3.0-64位生产 PL/SQL版本11.2.0.3.0 - 生产 核心11.2.0.3.0生产 TNS for Solaris:版本11.2.0.3.0 - 生产 NLSRTL版本11.2.0.3.0 - 生产# – cyborg007 2014-03-06 07:13:03