Vertica LISTAGG 未定义

Vertica LISTAGG not defined

据我所知 Vertica 8.1.x docs LISTAGG 支持 Vertica 8.1.x 及以上版本;但是,当我尝试使用此功能时,我看到以下内容:

SQL Error [3457] [42883]: [Vertica]VJDBC ERROR: Function LISTAGG(varchar) does not exist, or permission is denied for LISTAGG(varchar)

执行时:

SELECT LISTAGG(myColumn) FROM myTable;

我在另一个 Stack Overflow post 中看到,LISTAGG 是在 v9.1 中引入的。我目前使用的版本是 v9.0.1-19

任何人都可以确认或提供有关 LISTAGG 可能无法工作的原因的见解吗?

我可以确认它是在版本 v9.1.1-4 中添加的。在 v9.1.4 new features page

中查看

我有 2 个 Vertica 数据库,第一个是 v9.0.1-5,第二个是 v9.2.0-7。 LISTAGG() 2 号有空,1 号没空:

dbadmin=> select version();
              version               
------------------------------------
 Vertica Analytic Database v9.0.1-5

dbadmin=> SELECT LISTAGG(myColumn) FROM myTable;
ERROR 3457:  Function LISTAGG(varchar) does not exist, or permission is denied for LISTAGG(varchar)
HINT:  No function matches the given name and argument types. You may need to add explicit type casts
              version               
------------------------------------
 Vertica Analytic Database v9.2.0-7

dbadmin=> SELECT LISTAGG(myColumn) FROM myTable;
 LISTAGG 
---------
 aaa,abc

LISTAGG()/opt/vertica/packages/VFunctions 包的一部分,它是 v9.1.1 及更高版本中 v_func 架构中的唯一功能。


一个很好的选择是 GROUP_CONCAT(),它是 string_packages UDx 的一部分。有关安装说明和用法,请参阅自述文件。