X-Original-To: pgsql-sql-postgresql.org@localhost.postgresql.org Received: from localhost (neptune.hub.org [200.46.204.2]) by svr1.postgresql.org (Postfix) with ESMTP id 3C789D1B554 for ; Tue, 2 Dec 2003 04:54:22 +0000 (GMT) Received: from svr1.postgresql.org ([200.46.204.71]) by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024) with ESMTP id 52742-01 for ; Tue, 2 Dec 2003 00:53:50 -0400 (AST) Received: from smtp107.mail.sc5.yahoo.com (smtp107.mail.sc5.yahoo.com [66.163.169.227]) by svr1.postgresql.org (Postfix) with SMTP id 886CBD1B590 for ; Tue, 2 Dec 2003 00:53:49 -0400 (AST) Received: from ptil-138-190-chn.primus-india.net (HELO IVESIA67) (sgnerd@203.196.190.138 with login) by smtp-v1.mail.vip.sc5.yahoo.com with SMTP; 2 Dec 2003 04:53:47 -0000 Message-ID: <00cc01c3b88f$f14f3540$7502a8c0@hdsc.com> Reply-To: "Kumar" From: "Kumar" To: "Tomasz Myrta" Cc: "psql" References: <024a01c3b802$d9afac40$7502a8c0@hdsc.com> <3FCB9E01.6010405@klaster.net> Subject: Re: Concatenating multiple fetches into a single string Date: Tue, 2 Dec 2003 10:21:14 +0530 MIME-Version: 1.0 Content-Type: text/plain; charset="ISO-8859-2" Content-Transfer-Encoding: 8bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2800.1158 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165 X-Virus-Scanned: by amavisd-new at postgresql.org X-Archive-Number: 200312/7 X-Sequence-Number: 16173 Thanks for your reply. But how to use this comma_aggregate( ) function to concatenate the fetched columns values from a select statement. In my example my select stmt fetches the following 3 rows. How can I use this function to concatenate them. Select full_name FROM project_members where project_members.project_role_id in ( ' x,y,z ') ; full_name --------------- David Postgres plpgsql Expected return string is - 'David,Postgres,Plsql' Regards Kumar ----- Original Message ----- From: "Tomasz Myrta" To: "Kumar" Cc: "psql" Sent: Tuesday, December 02, 2003 1:31 AM Subject: Re: [SQL] Concatenating multiple fetches into a single string > Dnia 2003-12-01 13:01, Użytkownik Kumar napisał: > > Dear Friends, > > > > I am doing a migration from SQL server to Postgres SQL. A simple select > > fetches the following names. > > > > select full_name FROM project_members where > > project_members.project_role_id in (' + @p_res_ids + ') ; > > > > Let us say if the results are > > > > full_name > > --------------- > > David > > Postgres > > plpgsql > > > > I need to send the out put as David,Postgres,Plsql -- one string, > > concatenates the fetches from multiple rows. This was handled in SQL > > server with a cursor. > > I can't find simpler function (if I remember well, there is such one), > so there is my version of aggregate function you need: > > > create or replace function comma_aggregate(varchar,varchar) returns > varchar as ' > begin > if length($1)>0 and length($2)>0 then > return $1 || '', '' || $2; > elsif length($2)>0 then > return $2; > end if; > return $1; > end; > ' language 'plpgsql'; > > drop aggregate comma(varchar) cascade; > create aggregate comma (basetype=varchar, sfunc=comma_aggregate, > stype=varchar, initcond='' ); > > Regards, > Tomasz Myrta > > > ---------------------------(end of broadcast)--------------------------- > TIP 3: if posting/reading through Usenet, please send an appropriate > subscribe-nomail command to majordomo@postgresql.org so that your > message can get through to the mailing list cleanly