首页 > 解决方案 > 通过 ADODB 记录集和 Amazon Redshift (x64) 驱动程序查询时 LISTAGG 列为空

问题描述

我正在执行使用该LISTAGG函数创建两列的 SQL,它在Aginity中工作得很好。

SELECT po_num::numeric AS po_num,
       MIN(tran_date) AS tran_date ,
       listagg(tran_date, ',') within
GROUP (
       ORDER BY tran_date DESC) AS all_rm_dates,
      listagg(rm_num, ',') within
GROUP (
       ORDER BY tran_date DESC) AS all_rm_numbers
FROM main.curr_rm
GROUP BY 1

我尝试了上述 SQL 的一些变体,但没有一个会返回 ADODB 数据集中的 LISTAGG 列的recorset.open数据。我的标准过程是将 Aginity SQL 文件保存为文本文件,并将文件内容分配给 VBA 代码中的字符串变量。在过去的两年里,这个过程非常有效。问题是 LISTAGG 列都是空的(但在 Aginity 中运行 SQL 时不是)。ADODBrecordset.open语句:

rs.Open sql, CN, adOpenStatic, adLockOptimistic, adCmdText

与匹配的recorset.openSQL 一起执行并且不会导致错误。结果记录在 Aginity 和 ADODB recorset 之间匹配,但LISTAGG列除外。recordset.openLISTAGG 列是空的。想不通我们的原因。不确定这是否是 Amazon Redshift x64 驱动程序、ADODB 或我在recordset.open声明中的标准的限制。

标签: vbapostgresqlamazon-redshiftadodb

解决方案


推荐阅读