Thread: aggregate reverse

aggregate reverse

From
"Marcin Krawczyk"
Date:
Hi all. I wolud like to know whether it is possible to reverse the behaviour of an aggregate? Say I have a string
'1,2,3,4'.Is there a way to split those values to records?<br /><br />Regards and thanks in advance.<br /> mk<br /> 

Re: aggregate reverse

From
"Pavel Stehule"
Date:
Hello

I am not sure if I understand well.

On 01/02/2008, Marcin Krawczyk <jankes.mk@gmail.com> wrote:
> Hi all. I wolud like to know whether it is possible to reverse the behaviour
> of an aggregate? Say I have a string '1,2,3,4'. Is there a way to split
> those values to records?

create or replace function unpack(anyarray)
returns setof anyelement as $$
select $1[i]  from generate_series(array_lower($1,1), array_upper($1,1)) g(i)
$$ language sql immutable;

select * from unpack(string_to_array('1,2,3,4',','));unpack
--------1234
(4 rows)

Regards
Pavel


>
> Regards and thanks in advance.
>  mk
>


Re: aggregate reverse

From
"Marcin Krawczyk"
Date:
Yes, you got me well. That's exactly what I was trying to achieve. Thank you.


2008/2/1, Pavel Stehule <pavel.stehule@gmail.com>:
Hello

I am not sure if I understand well.

On 01/02/2008, Marcin Krawczyk <jankes.mk@gmail.com> wrote:
> Hi all. I wolud like to know whether it is possible to reverse the behaviour
> of an aggregate? Say I have a string '1,2,3,4'. Is there a way to split
> those values to records?

create or replace function unpack(anyarray)
returns setof anyelement as $$
select $1[i]
   from generate_series(array_lower($1,1), array_upper($1,1)) g(i)
$$ language sql immutable;

select * from unpack(string_to_array('1,2,3,4',','));
unpack
--------
1
2
3
4
(4 rows)

Regards
Pavel


>
> Regards and thanks in advance.
>  mk
>