如何在RelNode中达到STRING_AGG?

问题描述

我有一个查询,我想用定界符,连接所有行。我可以使用STRING_AGGsql中轻松实现。如何为以下查询创建relNode?​​ p>

SELECT STRING_AGG(CONCAT(col1,col2,col3),',')
FROM table;

是否只有一个sqlStdOperator可以做到这一点?

如果没有,sqlStdOperatorbuilder.call(...,RexNode... rexNodes)的哪些组合可用于实现此目的?

解决方法

STRING_AGG的等效值为SqlStdOperator.LISTAGG

builder
.scan("table")
.project(
    builder.call(SqlStdOperatorTable.LISTAGG,builder.call(SqlStdOperatorTable.CONCAT,builder.field("col1"),builder.field("col2"),builder.field("col3")
            )
        ),builder.literal(",")
    )
)
.build()

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...