如何在 PostgreSQL 8.0.2 中将列表转换为数组

Posted

技术标签:

【中文标题】如何在 PostgreSQL 8.0.2 中将列表转换为数组【英文标题】:How to convert list to Array in PostgreSQL 8.0.2 【发布时间】:2020-07-26 21:34:49 【问题描述】:

我有一个简单的清单。所有灰显的列具有相同的值。我需要的是最后一列是“缺货、交货、缺货”的一行——最好按字母顺序排序。

版本为 8.0.2。例如,我无权访问 string_agg() 。我以为我几乎用这个查询到了那里,只是想尝试创建一个数组列:select array(select top 1 array_element::text from my_table

但是,我收到了这个错误:

    [Amazon](500310) Invalid operation: Assert
Details: 
 -----------------------------------------------
  error:  Assert
  code:      1000
  context:   subplan->subLinkType == EXPR_SUBLINK || subplan->subLinkType == EXISTS_SUBLINK - 
  query:     17680093
  location:  xen_execute.cpp:7497
  process:   padbmaster [pid=14308]
  -----------------------------------------------;
1 statement failed.

Execution time: 1.08s

示例输入为:

【问题讨论】:

您运行的是 Postgres 还是 Redshift?这是两种不同的产品(尽管 Redhisft 最初是 Postgres 的一个分支)。 我正在使用 Informatica 的 PowerCenter SQL Workbench 连接到 Redshift。在那里我运行“选择版本()”来获得上面显示的 8.0.2。我希望这更清楚。 【参考方案1】:

您似乎正在寻找字符串聚合。在 Redshift 中,这是由 listagg() 实现的。

以下查询为您提供所有demande_source 值的逗号分隔列表,按字母顺序排列:

select listagg(demand_source, ',') within group(order by demand_source) as demande_sources
from mytable

【讨论】:

靶心!谢谢

以上是关于如何在 PostgreSQL 8.0.2 中将列表转换为数组的主要内容,如果未能解决你的问题,请参考以下文章

如何在windows的“omnidb”中将csv文件数据导入postgresql

如何在 PostgreSQL 11.1 中将现有列更改为身份

如何在PostgreSQL中将状态日志数据聚合成具有相同状态的时间间隔?

如何在python flask app中将数据从postgresql渲染到csv?

如何在PostgreSQL中将空转换为null?

如何在 Python 中将(有些复杂的)Postgresql 语句转换为 SQLAlchemy ORM?