Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vzijE-001FiE-3B for pgsql-general@arkaria.postgresql.org; Mon, 09 Mar 2026 22:05:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vzijD-000tBs-1G for pgsql-general@arkaria.postgresql.org; Mon, 09 Mar 2026 22:05:31 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vzijC-000tBj-34 for pgsql-general@lists.postgresql.org; Mon, 09 Mar 2026 22:05:31 +0000 Received: from mail-ot1-x32d.google.com ([2607:f8b0:4864:20::32d]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vzijA-00000001M5r-3HQP for pgsql-general@lists.postgresql.org; Mon, 09 Mar 2026 22:05:30 +0000 Received: by mail-ot1-x32d.google.com with SMTP id 46e09a7af769-7d738fe814cso2510432a34.3 for ; Mon, 09 Mar 2026 15:05:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773093928; cv=none; d=google.com; s=arc-20240605; b=lzFvOFeiDbwUQK6SwGEx6LJ/1FE9+ULXkVG/GHsLg8fqGe983IJ05h3MAET8kMyybP c2BqVrWfYB9lgrel9d6OhYlj5i0B3EuMKcIVZr5LhiSn8mo37oiJn3cjt0Jz992OZipE BnFW46qPo6ZayyMUQXbUuA8xtZ1cSQi4IHCHZ8bOD4IIK+wG13Kyu/C/83wHkpUiifwX XveIZFo1pydFKlQYJ4rOg0RwiDrUrZDcrdDH387i0hdhj1PT2u9X/8cHlpvQsVO+jt93 vNDtKgS6gh68YmEaF1Im89AWsAyKWteIKOpu18TLXnuklJ9zAgV9mkiLeK+6P9u+a3Y8 VlMg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=U081ezj1Ax67uFo3rrpX306AoJsCMHdrf6nMy7hT9kU=; fh=GYvKIk98ibur9RMlCPnh1wUCkYVMcQyiJc/iuLZ5qNo=; b=RO5PpUZd/Q+MvhTZ0WFV/koCH7ku1dVzYD7aNYRSlqUSPacJjyP7BW41Vl5qz8q3vh 3f+TbGnHH46R9NV/+8Qw+bCg8BpkSkfI+AnS9xunpy9Zs6cW7SNFL+vNwwuxRKksH6VH sGeEz51nQdkM41ifX++zRAdvK9dkg96zKz3UGtKAparnKNZwrbLpOBbr787Wt59kG3QE JMlrh50k4cb6oPthXPE9LVO/Z/cTMVmyqkgtRbBCLBxooXpAvwp3fvBMsp4iQKQbltCH FpPgCj/zdsLM9fGVwdxfclVhv5bbp8BoSC+dfcpnd+E3BHefZW4NcebhdICilhmXZpYF XQJw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=illuminatedcomputing-com.20230601.gappssmtp.com; s=20230601; t=1773093928; x=1773698728; darn=lists.postgresql.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=U081ezj1Ax67uFo3rrpX306AoJsCMHdrf6nMy7hT9kU=; b=jveySxMiKL341Gx9P3iai/ZgTAXaNTt21IqrWIQOFCJr6HZo4iqmyp/e3R3Xi55Z5Z pKflloQwflOViB2fag95etZYyvuzjylcaJIdX76KMcnP6rDA93RCFyDXcsL12btyuXxO vJ973xYmSHEM9iOgPUa4tTvUf+M7A6D+OaracxeHSzz5E6ZSM9IydVWskFvHQL0c//c3 ZdrTSJRjP17cdav3krivGvuLw6PmmLj6fmBBuh1n1JJBrzzBmxatLx6lVgXIByAaO4/q LSl9LS968Ly9UMzT3QH6Y4UY5cCMc6I8x8FSwXe9dVOcQnF08PBerl3aC0WxAQ5Y4hED /yOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1773093928; x=1773698728; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=U081ezj1Ax67uFo3rrpX306AoJsCMHdrf6nMy7hT9kU=; b=BaoK9WSxf8gZNhPq+Oa1dgJOz36cfWYfxZjj+0tLG+FjRimFyK0/+37YN+K8N39p3+ 8oYee4LKcqjejJ4HZRSPKrnophhphgekO+2YplSGTI9ckJ4vsCl+bQ+3XWZrQUHCjvl+ XJ0aIpo9r8FNhk7KG2QcwxRCfYQkqEHY8LL/WQCZVTBhtssFbdwezCrKgcPkdBz7JnqW e7H9jZQc7L7wOCQQGhY0kCfVSIXUQZ0O9JfStwkVwCv/1Fpz1RHFNJ5F/XVLRdArn4iM VRI6Oug9I5ddL8MCsVMREdOqcZ72xUnTZKbNb1uMebGTJXQtp7oQSgz0AyHTRn+l39dQ uvMw== X-Gm-Message-State: AOJu0YwK+4/bURlV4V/rED9xWzD8qdEagAJl+STSkgsY0GZam7OEJCV6 zb01hIr5NaaN25c9PKtm339/MWNe1zGljKzc1CWlIZHVX6Y4xsUNaxcW+oMglFVNjOM/QNrbzXl kUE8F9vMfHM47mJXJ4JXUZtsQgvKLUw5ggk4oDlBFOQ== X-Gm-Gg: ATEYQzyPCHrKscnsdjPTHv3Q56LR1Gz8vqCVnFh4Hwu37bD4FmbKc2iwWYrcgeCX+M3 xIWFCZ+K7/HmiaiplA6ayQdfTe4gJmNeHFYQy0b+p862tPFrAFKruS5NVpR6WyK/Axw/OQFpjSV f0osWYSVLNDlKxKEkLNvAFKChQeZKD7b8U/zpV//kEJE1itlX6SQiy0wo1vWrGh1I4EMQyhMKGl FrCpzCeMZTbHW16QtWi5RsJeaCg95indeB7idRlJdv9zt6hIuO+I5NluLJg9Tv57WyZQBJ9c6q5 NDBu X-Received: by 2002:a05:6820:5049:b0:67b:a667:f538 with SMTP id 006d021491bc7-67ba667f90amr4950249eaf.15.1773093928197; Mon, 09 Mar 2026 15:05:28 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Paul A Jungwirth Date: Mon, 9 Mar 2026 15:05:17 -0700 X-Gm-Features: AaiRm50lRjyqeTc7M7lAaTviS0xm0yxeXAxwS3_Cu99Q5xF3YE_XFMcKnA31s88 Message-ID: Subject: =?UTF-8?Q?Re=3A_LISTAGG_=C3=A0_la_Oracle_in_PostgreSQL?= To: Pierre Forstmann Cc: "pgsql-general@lists.postgresql.org" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Mon, Mar 9, 2026 at 1:21=E2=80=AFPM Pierre Forstmann wrote: > > 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 don't think you need a custom aggregate here. In Postgres you can say: select deptno, string_agg(ename, ',' ORDER BY ename) AS employees FROM emp GROUP BY deptno ORDER BY deptno; --=20 Paul ~{:-) pj@illuminatedcomputing.com