Получить несколько значений столбцов из объединенной таблицы в списке, разделенном запятыми - PullRequest
0 голосов
/ 19 июня 2020

У меня есть 3 таблицы, которые содержат строки, как показано ниже:

RESEARCH_REPORTS таблица:

REPORT_ID   TOPIC
141         My Report Topic Title
142         Another Report Topic Title
143         Yet Another Report Topic Title
...

PROGRAM_AREAS_REPORTS_REL таблица:

REPORT_ID    PROGRAM_AREA_ID
141          6
141          11
141          12
...

PROGRAM_AREAS table:

PROGRAM_AREA_ID    TITLE
6                  Program Area One
11                 Program Area Two
12                 Program Area Three
...

Этот запрос в настоящее время возвращает мне результаты снизу:

SELECT rr.report_id, rr.topic, pa.title as program_areas 
FROM RESEARCH_REPORTS rr 
INNER JOIN PROGRAM_AREAS_REPORTS_REL parr ON rr.report_id = parr.report_id 
INNER JOIN PROGRAM_AREAS pa ON parr.program_area_id = pa.program_area_id 
WHERE rr.report_id = 141

Результаты запроса :

report_id    topic                    program_areas
141          My Report Topic Title    Program Area One
141          My Report Topic Title    Program Area Two
141          My Report Topic Title    Program Area Three

Мне нужен запрос выбора, который дает следующий формат:

Предпочтительные результаты запроса :

report_id    topic                    program_areas
141          My Report Topic Title    Program Area One, Program Area Two, Program Area Three    

Как Могу ли я выполнить sh это в моем текущем запросе?

1 Ответ

1 голос
/ 19 июня 2020

Используйте функцию string_agg(): -

SELECT rr.report_id, rr.topic, string_agg(pa.title,',') as program_areas 
FROM RESEARCH_REPORTS rr 
INNER JOIN PROGRAM_AREAS_REPORTS_REL parr ON rr.report_id = parr.report_id 
INNER JOIN PROGRAM_AREAS pa ON parr.program_area_id = pa.program_area_id 
WHERE rr.report_id = 141
group by rr.report_id, rr.topic
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...