Обсуждение: Append n Rows into a Single Row

Поиск
Список
Период
Сортировка

Append n Rows into a Single Row

От
Tripura
Дата:
Hi,
I am totally new to PostgreSQL and this is my first script.
Can anyone please help me with my following requirement 

I have script that returns  1 column and 40 rows.
My requirement is update this existing script to show all the 40 rows data
in a single row as a string.

For example 
The current script returns, something like this 
Tom
Tad
Max
Ted

I have to update the existing script to show the above results as follow
Tom || Tad || Max || Ted 

Something like colace in Ms sql

Any help is really appriciated.

Thankyou in Advance.







--
View this message in context:
http://postgresql.1045698.n5.nabble.com/Append-n-Rows-into-a-Single-Row-tp4500306p4500306.html
Sent from the PostgreSQL - sql mailing list archive at Nabble.com.


Re: Append n Rows into a Single Row

От
Samuel Gendler
Дата:
Look at the documentation for the tablefunc contrib module. It provides a crosstab() function which will allow you to
pivotmultiple rows into multiple columns in a single row, with all rows that share a particular key in one or more
columnspivoting up into the same row, but different keys ending up as separate rows. You could then string concatenate
allcolumns of a single row into a single string if desired, 

Sent from my iPhone

On Jun 17, 2011, at 17:20, Tripura <k_tripura@hotmail.com> wrote:

> Hi,
> I am totally new to PostgreSQL and this is my first script.
> Can anyone please help me with my following requirement
>
> I have script that returns  1 column and 40 rows.
> My requirement is update this existing script to show all the 40 rows data
> in a single row as a string.
>
> For example
> The current script returns, something like this
> Tom
> Tad
> Max
> Ted
>
> I have to update the existing script to show the above results as follow
> Tom || Tad || Max || Ted
>
> Something like colace in Ms sql
>
> Any help is really appriciated.
>
> Thankyou in Advance.
>
>
>
>
>
>
>
> --
> View this message in context:
http://postgresql.1045698.n5.nabble.com/Append-n-Rows-into-a-Single-Row-tp4500306p4500306.html
> Sent from the PostgreSQL - sql mailing list archive at Nabble.com.
>
> --
> Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-sql


Re: Append n Rows into a Single Row

От
Rob Sargent
Дата:
Look at the array aggregation functions here 
<http://www.postgresql.org/docs/9.0/static/functions-array.html>

Tripura wrote:
> Hi,
> I am totally new to PostgreSQL and this is my first script.
> Can anyone please help me with my following requirement 
>
> I have script that returns  1 column and 40 rows.
> My requirement is update this existing script to show all the 40 rows data
> in a single row as a string.
>
> For example 
> The current script returns, something like this 
> Tom
> Tad
> Max
> Ted
>
> I have to update the existing script to show the above results as follow
> Tom || Tad || Max || Ted 
>
> Something like colace in Ms sql
>
> Any help is really appriciated.
>
> Thankyou in Advance.
>
>
>
>
>
>
>
> --
> View this message in context:
http://postgresql.1045698.n5.nabble.com/Append-n-Rows-into-a-Single-Row-tp4500306p4500306.html
> Sent from the PostgreSQL - sql mailing list archive at Nabble.com.
>
>   


Re: Append n Rows into a Single Row

От
Samuel Gendler
Дата:
Actually, you need the array_agg() function to aggregate multiple rows into a single array, and that is discussed on the aggregate functions page, here: http://www.postgresql.org/docs/9.0/static/functions-aggregate.html

You could then use one of the other array functions to manipulate that array.

But given that you are appending strings to each other in your example, you can also just use the string_agg function from that same page - assuming you are on 9.0.  It looks like that function isn't available before 9.0

--sam



On Sat, Jun 18, 2011 at 8:33 PM, Rob Sargent <robjsargent@gmail.com> wrote:
Look at the array aggregation functions here <http://www.postgresql.org/docs/9.0/static/functions-array.html>


Tripura wrote:
Hi,
I am totally new to PostgreSQL and this is my first script.
Can anyone please help me with my following requirement
I have script that returns  1 column and 40 rows.
My requirement is update this existing script to show all the 40 rows data
in a single row as a string.

For example The current script returns, something like this Tom
Tad
Max
Ted

I have to update the existing script to show the above results as follow
Tom || Tad || Max || Ted
Something like colace in Ms sql

Any help is really appriciated.

Thankyou in Advance.







--
View this message in context: http://postgresql.1045698.n5.nabble.com/Append-n-Rows-into-a-Single-Row-tp4500306p4500306.html
Sent from the PostgreSQL - sql mailing list archive at Nabble.com.

 

--
Sent via pgsql-sql mailing list (pgsql-sql@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-sql

Re: Append n Rows into a Single Row

От
"Ross J. Reedstrom"
Дата:
On Sat, Jun 18, 2011 at 08:51:55PM -0700, Samuel Gendler wrote:
> Actually, you need the array_agg() function to aggregate multiple rows into
> a single array, and that is discussed on the aggregate functions page,
> here: http://www.postgresql.org/docs/9.0/static/functions-aggregate.html
> 
> You could then use one of the other array functions to manipulate that
> array.
> 
> But given that you are appending strings to each other in your example, you
> can also just use the string_agg function from that same page - assuming you
> are on 9.0.  It looks like that function isn't available before 9.0
> 

Nice blog post about this here:

http://www.postgresonline.com/journal/archives/191-stringagg.html

Ross
-- 
Ross Reedstrom, Ph.D.                                 reedstrm@rice.edu
Systems Engineer & Admin, Research Scientist        phone: 713-348-6166
Connexions                  http://cnx.org            fax: 713-348-3665
Rice University MS-375, Houston, TX 77005
GPG Key fingerprint = F023 82C8 9B0E 2CC6 0D8E  F888 D3AE 810E 88F0 BEDE