Vertica LISTAGG未定义

时间:2019-07-01 19:21:38

标签: sql vertica listagg

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

  

SQL错误[3457] [42883]:[Vertica] VJDBC错误:函数   LISTAGG(varchar)不存在,或者对的权限被拒绝   LISTAGG(varchar)

执行时:

SELECT LISTAGG(myColumn) FROM myTable;

我在另一个Stack Overflow帖子中看到LISTAGG是在v9.1 (see here)中引入的。我目前正在使用v9.0.1-19版

任何人都可以确认或提供有关LISTAGG为何无法正常工作的信息吗?

1 个答案:

答案 0 :(得分:1)

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

中查看

我有2个Vertica数据库,第一个是v9.0.1-5,第二个是v9.2.0-7。 LISTAGG()在第二个可用,但在第一个不可用:

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的一部分。有关安装说明和用法,请参见自述文件。