Re: not quite a cross tab query...

Поиск
Список
Период
Сортировка
От Steve Atkins
Тема Re: not quite a cross tab query...
Дата
Msg-id A826A2D8-F33C-4B72-B5D2-FDD7C499CDF8@blighty.com
обсуждение исходный текст
Ответ на not quite a cross tab query...  (Richard Greenwood <richard.greenwood@gmail.com>)
Ответы Re: not quite a cross tab query...  (Richard Greenwood <richard.greenwood@gmail.com>)
Список 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



В списке pgsql-general по дате отправления:

Предыдущее
От: "A. Kretschmer"
Дата:
Сообщение: Re: Postgres Cookbook
Следующее
От: Sathish Duraiswamy
Дата:
Сообщение: Re: converting older databases