Using LISTAGG function in Oracle
我有两张桌子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | 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函数并带来如下输出:
1 2 3 4 5 6 | output ------ skuid prod catids sku123 prod12 cat12,cat23,cat34 sku234 prod12 cat12,cat23,cat34 sku345 prod12 cat12,cat23,cat34 |
当我单独使用类别表时,我可以使用LISTAGG并正确汇总输出(无须输入)
使用以下查询:
1 2 3 4 | SELECT product,LISTAGG(id, ',') WITHIN GROUP (ORDER BY id) AS catids FROM category GROUP BY product; |
但是我无法将其与prod表连接起来并无法获得所需的输出。
请帮忙。
您可以在加入后执行此操作:
1 2 3 4 5 6 | 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; |