簡體   English   中英

在 Oracle 中使用 LISTAGG 函數

[英]Using LISTAGG function in Oracle

我有兩張桌子

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;

您可以按如下方式編寫查詢:

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 函數一起使用的更復雜版本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM