Re: LISTAGG à la Oracle in PostgreSQL
Juan Rodrigo Alejandro Burgos Mella <rodrigoburgosmella@gmail.com>
From: Juan Rodrigo Alejandro Burgos Mella <rodrigoburgosmella@gmail.com>
To: Pierre Forstmann <pierre.forstmann@gmail.com>
Cc: "pgsql-general@lists.postgresql.org" <pgsql-general@lists.postgresql.org>
Date: 2026-03-10T08:45:27Z
Lists: pgsql-general
Pierre
The equivalent in PostgreSQL is through:
SELECT deptno,
STRING_AGG(ename, ',' ORDER BY ename) AS employeesFROM empGROUP
BY deptnoORDER BY deptno;
Atte
JRBM
El lun, 9 mar 2026 a las 15:21, Pierre Forstmann (<
pierre.forstmann@gmail.com>) escribió:
> Hello,
>
> I can write a LISTAGG aggregate for:
>
> create table emp(deptno numeric, ename text);
>
> SELECT deptno, LISTAGG(ename, ','::text ORDER BY ename) AS employees
> FROM emp GROUP BY deptno ORDER BY deptno;
>
> I would like to know if is possible to create an aggregate LISTAGG that
> would work like in Oracle:
>
> SELECT deptno,
> listagg(ename, ',') WITHIN GROUP (ORDER BY ename) AS employees
> FROM emp
> GROUP BY deptno
> ORDER BY deptno;
>
> I failed and IA also failed. Claude says:
>
> It is not possible to exactly replicate listagg(ename, ',') WITHIN GROUP
> (ORDER BY ename) as a custom PostgreSQL aggregate
> because PostgreSQL strictly forbids ungrouped columns as direct
> arguments to ordered-set aggregates.
>
> Do you agree ?
>
>
>
>
>
>
>