Sql 将listag函数与联接表一起使用

Sql 将listag函数与联接表一起使用,sql,oracle,join,listagg,Sql,Oracle,Join,Listagg,我想使用listag()函数在SQL查询中聚合名称列。我必须加入3张桌子。表PRI2PR是我的联接表 表项目 ID ---------- 12 表项目 ID NAME --- --------------- 61 Józef Dawidowski 表PRI2PR ID ID_PRIN ID_PROJ ---------- ---------- --- 9 12 61 我的问题是: SELECT

我想使用listag()函数在SQL查询中聚合名称列。我必须加入3张桌子。表PRI2PR是我的联接表

表项目

        ID
----------
        12 
表项目

ID     NAME
---  ---------------
61    Józef Dawidowski
表PRI2PR

ID    ID_PRIN    ID_PROJ 
---------- ---------- ---
9         12         61 
我的问题是:

SELECT pi.ID,
LISTAGG(pr.NAME, ',') WITHIN GROUP (ORDER BY pr.NAME) AS PRO
FROM PROJ_INW pi
INNER JOIN PRI2PR pp ON pi.ID = pp.ID_PRIN
INNER JOIN PROJEKT pr ON pp.ID_PROJ = pr.ID
GROUP BY pi.ID, pr.NAME

问题:在我的情况下,如何更正我的SQL语句以使用listag()函数?

您的查询基本上没有问题。从
组中删除
pr.name

SELECT pi.ID,
       LISTAGG(pr.NAME, ',') WITHIN GROUP (ORDER BY pr.NAME) AS PRO
FROM PROJ_INW pi INNER JOIN
     PRI2PR pp
     ON pi.ID = pp.ID_PRIN INNER JOIN
     PROJEKT pr
     ON pp.ID_PROJ = pr.ID
GROUP BY pi.ID;

你的问题基本上没问题。从
组中删除
pr.name

SELECT pi.ID,
       LISTAGG(pr.NAME, ',') WITHIN GROUP (ORDER BY pr.NAME) AS PRO
FROM PROJ_INW pi INNER JOIN
     PRI2PR pp
     ON pi.ID = pp.ID_PRIN INNER JOIN
     PROJEKT pr
     ON pp.ID_PROJ = pr.ID
GROUP BY pi.ID;