From: | Steve Atkins <steve(at)blighty(dot)com> |
---|---|
To: | Postgres Mailing List <pgsql-general(at)postgresql(dot)org> |
Subject: | Re: not quite a cross tab query... |
Date: | 2009-03-05 19:29:55 |
Message-ID: | A826A2D8-F33C-4B72-B5D2-FDD7C499CDF8@blighty.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Mar 5, 2009, at 11:17 AM, Richard Greenwood wrote:
> Hello pgsql listers,
>
> I've got a problem that is similar to, but I don't think identical to,
> a cross tab query. My data looks like:
> ID | CAT
> 1 | A
> 1 | B
> 2 | A
> 2 | C
> So for each ID there may be many CAT (categories).
> The client wants it to look like:
> ID | CATS
> 1 | A,B
> 2 | A,C
> Where each ID is unique in the results, and the CAT values are
> concatenated with a comma separator.
>
> There are about 100 unique CAT values. They only way I can see to do
> it is programatically with a for loop. But before I do that I wanted
> to bounce it off the fine minds that inhabit this list.
Sounds like a job for array_accum(), which you can find mentioned
at http://www.postgresql.org/docs/8.3/interactive/xaggr.html
select id, array_to_string(array_accum(cat), ',') from table group by
id;
There'll be a built-in array_agg() in 8.4, I think.
Cheers,
Steve
From | Date | Subject | |
---|---|---|---|
Next Message | Sathish Duraiswamy | 2009-03-05 19:35:15 | Re: converting older databases |
Previous Message | darren | 2009-03-05 19:27:15 | Re: not quite a cross tab query... |