[英]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.