sql - 在 Oracle 中使用 LISTAGG 函数

标签 sql oracle listagg

我有两张 table

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

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

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

当我单独使用类别表时,我能够使用 LISTAGG 并正确聚合输出(没有 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;

关于sql - 在 Oracle 中使用 LISTAGG 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36419938/

相关文章:

mysql - 合并多个查询 - 同一表

sql - 将 FOR XML PATH 结果拆分为单独的行

sql - 获取数据库 session 过期时间

sql - 带case语句的-listagg的正确形式

sql - 我想通过使用特定列进行分组,但同时我需要连接

php - 如果 PDO INSERT 查询中的值为空,则如何避免错误?

sql - 如何获取不同格式的sysdate?

sql - WHERE 与 HAVING 性能与 GROUP BY

.net - Entity Framework ,将oracle数据库类型号(10)映射到.net Int32

sql - 连接太长