Если у меня есть следующие таблицы (просто пример):
Таблица 1:
Таблица 2:
Как мне объединить две таблицы, чтобы можно было отображать несколько значений в одной строке, как показано ниже?
Я использую db2, поэтому не могу использовать некоторые функции, такие как GROUP_CONCAT(). Будет ли LIST_AGG() вариантом? Или есть способ использовать вложенный оператор выбора и каким-то образом объединить результаты, что-то вроде этого?
select
id
,concat((select value
from database.table2 tab2
join database.table1 tab1
on tab1.id=tab2.id))
from database.table1
См. документацию по LISTAGG: db2tutorial.com/db2-aggregate-functions/db2-listagg
Привет! Если вы считаете, что LISTAGG — это вариант, то что мешает вам попробовать его?


Вы можете использовать LISTAGG(), как показано ниже:
select a.id, a.tax_year,
listagg(b.value, ',') within group (order by b.value) as value
from table1 a
left join table2 b on b.id = a.id and b.tax_year = a.tax_year
group by a.id, a.tax_year;
Результат:
ID TAX_YEAR VALUE
--- --------- -----
1 2000 a,b,c
1 2001 null
2 2001 null
См. пример выполнения в db<>fiddle.
Спасибо! Это работает отлично, я пытался использовать listagg, но, похоже, у меня был отключен синтаксис.
Не спамьте тегами! Отмечайте только ту СУБД, которую вы используете. Остальные теги я удалил.