3

我有两张桌子

类别
--------

id 产品 seq_num
猫 12 产品 12 0
cat23 产品 12 1
cat34 产品 12 2

产品
-----

sku 产品 seq_num
sku123 产品 12 0
sku234 产品 12 1
sku345 prod12 2

我正在尝试使用 LISTAGG 函数并带来如下输出:

输出
------
skuid prod catids
sku123 prod12 cat12,cat23,cat34
sku234 prod12 cat12,cat23,cat34
sku345 prod12 cat12,cat23,cat34

当我单独使用类别表时,我可以使用 LISTAGG 并正确汇总输出(没有 skuid)

使用以下查询:

选择产品,LISTAGG(id,',')
在组内(按 id 排序)作为 catids
从类别
按产品分组;

但我无法将它与 prod 表连接并获得所需的输出。请帮忙。

4

2 回答 2

3

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

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;
于 2016-04-05T07:46:32.453 回答
0

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

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;

你也可以检查这个; 它是 listagg 和 join 函数一起使用的更复杂的版本

于 2020-12-19T00:33:20.497 回答