如何在 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中将状态日志数据聚合成具有相同状态的时间间隔?