【问题标题】:ORACLE SQL listagg functionORACLE SQL listagg 函数
【发布时间】:2011-04-06 16:12:01
【问题描述】:

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

这是我的 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.

【问题讨论】:

  • 对我来说看起来不错。你确定你的db是11g吗?您可以通过select banner from v$version;查看

标签: sql oracle ora-00923


【解决方案1】:

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

您的 SQL 语句在 11.2 中对我来说是有效的。但是您会在 11.1 中得到一个错误,并且 ORA-00923 在 11.1 中似乎是一个合理的错误。

【讨论】:

  • 我运行了康拉德在 cmets 中提到的查询,看起来我们运行的是 11.1 而不是 11.2。谢谢大佬,时间一到我就把这个标记为答案。
  • +1 我没有意识到这是 11.2 唯一的事情。如果我有 11.1,我会认为它应该可以工作。
  • 11.2 中也会出现此错误。 Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production PL/SQL Release 11.2.0.3.0 - Production CORE 11.2.0.3.0 Production TNS for Solaris: Version 11.2.0.3.0 - Production NLSRTL Version 11.2.0.3.0 - Production
  • @cyborg007 - 你正在运行什么查询?
  • @cyborg007 - 您发布的查询调用list_agg 而不是listagg。您的查询与原始问题使用的查询有很大不同,如果您找不到语法错误,可能值得创建一个单独的问题。
猜你喜欢
  • 2021-07-25
  • 1970-01-01
  • 2016-09-02
  • 2016-07-25
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多