Is there an Oracle SQL query that aggregates multiple rows into one row?

user128807 picture user128807 · Jul 13, 2009 · Viewed 87.3k times · Source

I have a table that looks like this:

A 1 
A 2 
B 1 
B 2

And I want to produce a result set that looks like this:

A 1 2 
B 1 2

Is there a SQL statement that will do this? I am using Oracle.

Related questions:

Answer

John Hyland picture John Hyland · Jul 13, 2009

It depends on the version of Oracle you're using. If it supports the wm_concat() function, then you can simply do something like this:

SELECT field1, wm_concat(field2) FROM YourTable GROUP BY field2;

wm_concat() basically works just like group_concat() in MySQL. It may not be documented, so fire up ye olde sqlplus and see if it's there.

If it isn't there, then you'll want to implement something equivalent yourself. You can find some instructions on how to do this in the string aggregation page at oracle-base.com.