9

I am using Amazon redshift. How do I combine the result of the columns.

If the original rows are:

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

the result should be:

*ID Name Color ---------------- 1 John White Black 2 Mark Blue Red* 
3
  • Amazon Redshift is based on Postgres. How can a MySQL answer for group_concat be relevant? or a "duplicate"? @FancyPants +1 Commented Nov 9, 2017 at 7:25
  • @Used_By_Already I don't know anything about amazon redshift, but the question was and still is tagged as mysql. Commented Nov 9, 2017 at 9:09
  • @FancyPants good point, so I changed that. Mark: please only use tags that are relevant to this question. Commented Nov 9, 2017 at 9:30

1 Answer 1

18

Redshift provides a function LISTAGG() for what you need

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

For each group in a query, the LISTAGG aggregate function orders the rows for that group according to the ORDER BY expression, then concatenates the values into a single string. 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 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.