【问题标题】:How to combine rows in Amazon Redshift [duplicate]如何在 Amazon Redshift 中合并行 [重复]
【发布时间】:2018-04-22 01:58:09
【问题描述】:

我正在使用亚马逊红移。 如何组合列的结果。

如果原始行是:

*ID   Name  Color
----------------
1   John   White
1   John   Black
2   Mark   Blue
2   Mark   Red*

结果应该是:

*ID   Name  Color
----------------
1   John   White Black
2   Mark   Blue Red*

【问题讨论】:

  • Amazon Redshift 基于 Postgres。 group_concat 的 MySQL 答案如何相关?还是“重复”? @FancyPants +1
  • @Used_By_Already 我对亚马逊红移一无所知,但问题是并且仍然被标记为 mysql。
  • @FancyPants 好点,所以我改了。马克:请只使用与该问题相关的标签。

标签: sql join amazon-redshift


【解决方案1】:

Redshift 提供了一个函数 LISTAGG() 来满足你的需要

SELECT id, name, LISTAGG(Color,' ') AS Colors
FROM yourtable
GROUP BY id, name

对于查询中的每个组,LISTAGG 聚合函数对 根据 ORDER BY 表达式该组的行,然后 将值连接成单个字符串。 http://docs.aws.amazon.com/redshift/latest/dg/r_LISTAGG.html

SELECT id, name
 , LISTAGG(Color,' ') WITHIN GROUP (ORDER BY name) AS Colors
FROM yourtable
GROUP BY id, name

【讨论】:

  • +1,它有效。谢谢
  • 太棒了!如果您现在“接受”这个答案,您将获得 2 点声望点,而我获得 15 点。但最重要的是,其他读者会知道这个问题已得到回答。要接受“Click the Tick”以获取更多信息,请参阅help/accepting
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-03-20
  • 2013-05-07
  • 1970-01-01
  • 1970-01-01
  • 2013-02-16
  • 2020-09-11
  • 1970-01-01
相关资源
最近更新 更多