У меня есть 2 таблицы, подобные этой:
table_a
id col2
1 A
1 B
2 A
2 B
3 B
table_b
id col1
1 X
2 Y
3 Z
Я хочу объединить обе таблицы так, чтобы результирующий элемент содержал повторяющиесяЗначения строки в столбце таблицы 2 в виде столбцов.Каждый идентификатор не должен содержать более 3 значений table_a.col2.В этом примере таблица результатов будет выглядеть следующим образом:
result:
id col1 col2 col3 col 4
1 X A B null
2 Y A B null
3 Z B null null
Как этого добиться?Я знаю, что могу использовать listagg () для агрегирования всех строк в один столбец, например:
select b.id, b.col1,
listagg(a.col2, '_') within group (order by a.col2) as col2
from table_b b join
table_a a
on b.id = a.id
group by b.id, b.col1;
Это даст мне такой результат:
id col1 col2
1 X A_B
2 Y A_B
3 Z B