首页 > 解决方案 > 如何在 PostgreSQL 8.0.2 中将列表转换为数组

问题描述

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

版本为 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

样本输入为: 在此处输入图像描述

标签: databasestringgroup-byamazon-redshift

解决方案


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

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

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

推荐阅读