SQL-соединение, отображение нескольких значений в одной строке

Если у меня есть следующие таблицы (просто пример):

Таблица 1:

идентификатор налоговый год 1 2000 г. 1 2001 г. 2 2001 г.

Таблица 2:

идентификатор налоговый год ценить 1 2000 г. а 1 2000 г. б 1 2000 г. с

Как мне объединить две таблицы, чтобы можно было отображать несколько значений в одной строке, как показано ниже?

идентификатор налоговый год ценить 1 2000 г. а, б, в 1 2001 г. --- 2 2001 г. ---

Я использую 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

Не спамьте тегами! Отмечайте только ту СУБД, которую вы используете. Остальные теги я удалил.

Jonas Metzler 17.05.2024 19:43

См. документацию по LISTAGG: db2tutorial.com/db2-aggregate-functions/db2-listagg

Jonas Metzler 17.05.2024 19:45

Привет! Если вы считаете, что LISTAGG — это вариант, то что мешает вам попробовать его?

NickW 17.05.2024 19:59
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
3
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать 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, но, похоже, у меня был отключен синтаксис.

yoss 17.05.2024 20:54

Другие вопросы по теме