aggregate... - Mailing list pgsql-sql

From Mathieu Arnold
Subject aggregate...
Date
Msg-id 1729482965.1021399989@andromede.reaumur.absolight.net
Whole thread Raw
Responses Re: aggregate...  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-sql
Hi

I have this :

CREATE FUNCTION "comma_cat" (text,text) RETURNS text AS '
SELECT CASE WHEN $2 IS NULL OR $2 = '''' THEN $1           WHEN $1 IS NULL OR $1 = '''' THEN $2           ELSE $1 ||
'','' || $2      END
 
' LANGUAGE 'sql';


CREATE AGGREGATE list ( BASETYPE = text, SFUNC = comma_cat, STYPE = text, 
INITCOND = '' );

I can use it as :
select user, list(email) from user join email using (id_user);

user   | list
-------+-----------------------------
mat    | mat@mat.cc, mat@absolight.fr
isa    | isa@mat.cc

but now, I'd like a better version of this function/aggregate couple which 
would allow me to do something like :

select user, list(email, ',') from user join email using (id_user);

user   | list
-------+-----------------------------
mat    | mat@mat.cc,mat@absolight.fr
isa    | isa@mat.cc

or :

select user, list(email, '|') from user join email using (id_user);

user   | list
-------+-----------------------------
mat    | mat@mat.cc|mat@absolight.fr
isa    | isa@mat.cc

I know I'd have to modify the function to take a third argument (easy) but 
I don't know how to use a 2 argument aggregate (I don't even know if it's 
possible).

-- 
Mathieu Arnold


pgsql-sql by date:

Previous
From: "Joel Burton"
Date:
Subject: Re: sort text field numerically
Next
From: Scott Royston
Date:
Subject: can't cast varchar as integer?