特定の製品のIDとスコアを生成するために次のクエリがあります
Select
tm.product_id,
listagg(tm.book_id || '(' || tm.score || ')',',')
within group (order by tm.product_id) as matches
from
tl_product_match tm
where
tm.book_id is not null
group by
tm.product_id
union
Select
stm.product_id,
listagg(stm.video_id || '(' || stm.score || ')',',')
within group (order by stm.product_id) as matches
from
tl_product_match stm
where
stm.video_id is not null
group by
stm.product_id
クエリは、次のような出力を生成します。
productId | matches
---------------------------------------------
1 | 123(30), 76565, 7687(500), 243(5)
2 | 352(30), 9(5), 34234(500), 43(5)
2 | 25(30), 78, 324(500), 23434(5)
3 | 546(30), 768, 34234(500), 324(5)
2つの質問:
- クエリを変更してユニオンを削除しても同じ結果を生成することは可能ですか?
ProductId 2が2回繰り返されます(つまり、ユニオンごとに1行)。同じ行にproductId 2を表示するにはどうすればよいですか?すなわち
productId | matches ----------------------------------------------------------------------------- 1 | 123(30), 76565, 7687(500), 243(5) 2 | 352(30), 9(5), 34234(500), 43(5), 25(30), 78, 324(500), 23434(5) 3 | 546(30), 768, 34234(500), 324(5)
前もって感謝します。