将 LISTAGG 函数与连接表一起使用
Using LISTAGG function with join tablee
我想使用 LISTAGG() 函数在我的 SQL 查询中聚合 NAME 列。我必须加入 3 tables。 Table PRI2PR 是我的加入-table.
Table PROJ_INW
ID
----------
12
Table 项目
ID NAME
--- ---------------
61 Józef Dawidowski
Table 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 语句以在我的案例中使用 LISTAGG() 函数?
您的查询基本没问题。从 group by
中删除 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;
我想使用 LISTAGG() 函数在我的 SQL 查询中聚合 NAME 列。我必须加入 3 tables。 Table PRI2PR 是我的加入-table.
Table PROJ_INW
ID
----------
12
Table 项目
ID NAME
--- ---------------
61 Józef Dawidowski
Table 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 语句以在我的案例中使用 LISTAGG() 函数?
您的查询基本没问题。从 group by
中删除 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;