H2用户使用'WITHIN GROUP'定义ListAgg函数

时间:2016-10-12 08:06:30

标签: java sql h2 listagg

感谢stackoverflow上的一个问题,我为我的H2数据库定义了一个自定义ListAgg聚合函数,似乎工作正常。

但是我使用ListAgg函数的SQL语句看起来像这样:

SELECT LISTAGG(SOMECOLUMN, ';')
         WITHIN GROUP (ORDER BY SOMECOLUMN)
FROM SOMETABLE
WHERE SOMECOLUMN = 'someValue';

并且失败并出现'语法错误:预期“BY”'。 可能是因为他不理解'WITHIN GROUP(ORDER BY SOMECOLUMN)'的表达方式,并期望'GROUP'之后的'BY'?!

是否有可能教他这个?

1 个答案:

答案 0 :(得分:0)

我找到了将h2数据库版本更新为最新版本的解决方案。

感谢对此答案的评论:H2 User defined aggregate function, ListAgg, can't use DISTINCT or TRIM() on the first parameter

自版本1.4.198(2019-02-22)起,H2具有以下实现 LISTAGG-参见changelog。描述为“部分”,但示例 在文档中至少包含LISTAGG(NAME,',')WITHIN GROUP(ORDER 按ID排序)和LISTAGG(ID,',')组内(按ID排序)超过(按BY排序) ID)– Andrew Spencer 19年6月21日在13:13