[英]Using LISTAGG function in Oracle
I have two tables我有两张桌子
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
I am trying to use LISTAGG function and bring output like:我正在尝试使用 LISTAGG 函数并带来如下输出:
output ------ skuid prod catids sku123 prod12 cat12,cat23,cat34 sku234 prod12 cat12,cat23,cat34 sku345 prod12 cat12,cat23,cat34
When i use category table alone i am able to use LISTAGG and get the output aggregated properly(without skuid)当我单独使用类别表时,我可以使用 LISTAGG 并正确聚合输出(没有 skuid)
using below query:使用以下查询:
SELECT product,LISTAGG(id, ',') WITHIN GROUP (ORDER BY id) AS catids FROM category GROUP BY product;
but i am not able to join this with prod table and get the desired output.但我无法将其与 prod 表连接并获得所需的输出。 Please help.请帮忙。
You can do it after the join:您可以在加入后执行此操作:
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;
You can write the query as follows:您可以按如下方式编写查询:
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;
Also you can check this;你也可以检查这个; it is more complicated version of usage together of listagg and join functions 这是 listagg 和 join 函数一起使用的更复杂版本
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.