Sql 在Oracle中使用listag函数

Sql 在Oracle中使用listag函数,sql,oracle,listagg,Sql,Oracle,Listagg,我有两张桌子 category -------- id product seq_num cat12 prod12 0 cat23 prod12 1 cat34 prod12 2 prod ----- sku prod seq_num sku123 prod12 0 sku234 prod12 1 sku345 prod12 2 我正在尝试使用Listag函数并产生如下输出: output ------ s

我有两张桌子

category -------- id product seq_num cat12 prod12 0 cat23 prod12 1 cat34 prod12 2 prod ----- sku prod seq_num sku123 prod12 0 sku234 prod12 1 sku345 prod12 2 我正在尝试使用Listag函数并产生如下输出:

output ------ skuid prod catids sku123 prod12 cat12,cat23,cat34 sku234 prod12 cat12,cat23,cat34 sku345 prod12 cat12,cat23,cat34 当我单独使用category表时,我就能够使用listag并在没有skuid的情况下正确地聚合输出

使用以下查询:

SELECT product,LISTAGG(id, ',') WITHIN GROUP (ORDER BY id) AS catids FROM category GROUP BY product; 但我无法将它与prod表连接起来并获得所需的输出。
请提供帮助。

您可以在加入后执行以下操作:

SELECT s.sku,t.product,
       LISTAGG(t.id, ',') WITHIN GROUP (ORDER BY id) AS catids
FROM category t
INNER JOIN prod s
 ON(t.product = s.prod)
GROUP BY t.product,s.sku;

您可以按如下方式编写查询:

SELECT p.sku "skuid", c.product "prod",
       LISTAGG(c.id, ',') WITHIN GROUP (ORDER BY id) 
         OVER (PARTITION BY c.product) AS catids
  FROM category c
  INNER JOIN prod p 
    ON c.product = p.prod
  ORDER BY "skuid", c.product;
你也可以检查这个;

@Aleksej抱歉未完全发布。现在编辑。