Re: pg SQL question - Mailing list pgsql-general

From David Fetter
Subject Re: pg SQL question
Date
Msg-id 20050123030933.GB17204@fetter.org
Whole thread Raw
In response to pg SQL question  ("Ed L." <pgsql@bluepolka.net>)
List pgsql-general
On Sat, Jan 22, 2005 at 02:03:58PM -0700, Ed L. wrote:
>
> There's probably an obvious answer for this, but I couldn't see it
> in the docs.  What's the simplest way to concatenate multiple
> same-column values in SQL?
>
> For example, suppose I have table foo (key integer, id integer,
> entry varchar) with data
>
>     key    id    entry
>     1    1    "Four score and seven years ago our fathers "
>     1    2    "brought forth on this continent, a new nation, "
>     1    3    "conceived in Liberty, and dedicated to the "
>     1    4    "proposition that all men are created equal."
>
> and I want to produce the following result:
>
> "Four score and seven years ago our fathers brought forth on this
> continent, a new nation, conceived in Liberty, and dedicated to the
> proposition that all men are created equal."

SELECT f.key, array_to_string(ARRAY(
    SELECT entry
    FROM  foo
    ORDER BY id
    WHERE key = f.key
), '') AS "blurb"
FROM foo f;

> I know this could be done writing a plpgsql function, but it seems
> so basic, I thought there might be something I'm overlooking.

Well, it's not *totally* basic, and it draws on a few different
things, but you can do it with builtins.

Cheers,
D
--
David Fetter david@fetter.org http://fetter.org/
phone: +1 510 893 6100   mobile: +1 415 235 3778

Remember to vote!

pgsql-general by date:

Previous
From: Tom Lane
Date:
Subject: Re: "Invalid message format" error from JDBC driver
Next
From: Ian Barwick
Date:
Subject: Re: SCHEMA compatibility with Oracle/DB2/Firebird