You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Amazon Redshift中基于id将多行数据合并为单行的方案咨询

实现方案

方案1:使用内置LISTAGG函数(推荐)

Redshift官方原生提供该函数用于行转列字符串拼接,无需硬编码匹配answer值,完全适配动态数据场景。

基础用法

SELECT
  id,
  LISTAGG(answer, ',') WITHIN GROUP (ORDER BY answer) AS concatenated_answers
FROM
  你的表名
GROUP BY
  id;

参数说明

  • 函数第二个参数','为拼接分隔符,可根据需求替换为其他字符
  • WITHIN GROUP (ORDER BY answer)用于控制拼接后值的排序规则,无排序要求可直接删除ORDER BY子句,或替换为你需要的排序字段
  • 若拼接结果超过VARCHAR默认最大长度(65535字节),可添加溢出处理参数避免报错,示例:
SELECT
  id,
  LISTAGG(answer, ',') ON OVERFLOW TRUNCATE '...' WITHIN GROUP (ORDER BY answer) AS concatenated_answers
FROM
  你的表名
GROUP BY
  id;

方案2:去重拼接场景

如果同一个id下存在重复的answer值,需要去重后再拼接,可以直接在LISTAGG中添加DISTINCT关键字:

SELECT
  id,
  LISTAGG(DISTINCT answer, ',') WITHIN GROUP (ORDER BY answer) AS concatenated_answers
FROM
  你的表名
GROUP BY
  id;

注:2021年及之后发布的Redshift版本支持LISTAGG直接搭配DISTINCT使用,更早版本可先在子查询中对id、answer字段去重后再做聚合操作

内容的提问来源于stack exchange,提问作者Dave Hazuki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 20:18:01