У меня есть 5 таблиц, которые содержат строки, как показано ниже:
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 таблица:
PROGRAM_AREA_ID TITLE
6 Program Area One
11 Program Area Two
12 Program Area Three
...
RESEARCH_REPORT_CATEGORY_REL таблица:
REPORT_ID CATEGORY_ID
141 9
141 10
141 18
141 23
...
RESEARCH_REPORT_CATEGORIES таблица:
CATEGORY_ID NAME
9 Category One
10 Category Two
18 Category Three
23 Category Four
...
Этот запрос в настоящее время возвращает мне результаты ниже:
SELECT rr.report_id,
rr.topic,
string_agg(pa.title, '|') as program_areas,
string_agg(rrc.name, '|') as categories
FROM RESEARCH_REPORTS rr
LEFT JOIN PROGRAM_AREAS_REPORTS_REL parr ON rr.report_id = parr.report_id
LEFT JOIN RESEARCH_REPORT_CATEGORY_REL rrcr ON rr.report_id = rrcr.report_id
LEFT JOIN PROGRAM_AREAS pa ON parr.program_area_id = pa.program_area_id
LEFT JOIN RESEARCH_REPORT_CATEGORIES rrc ON rrcr.category_id = rrc.category_id
WHERE rr.report_id = 141
GROUP BY rr.report_id, rr.topic
Результаты запроса :
|---------------------|-------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| report_id | topic | program_areas | categories |
|---------------------|-------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 141 | My Report Topic Title | Program Area One|Program Area Two|Program Area Three|Program Area One|Program Area Two|Program Area Three|Program Area One|Program Area Two|Program Area Three | Category One|Category Two|Category Three|Category Four|Category One|Category Two|Category Three|Category Four|Category One|Category Two|Category Three|Category Four|Category One|Category Two|Category Three|Category Four |
|---------------------|-------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
Если заметили , агрегированные значения в столбцах результатов program_areas
и categories
повторяются. Мне нужно избежать этих дубликатов с помощью запроса выбора, который приводит к следующему формату:
Предпочтительные результаты запроса :
|---------------------|-------------------------------------|---------------------------------------------------------|--------------------------------------------------------------|
| report_id | topic | program_areas | categories |
|---------------------|-------------------------------------|---------------------------------------------------------|--------------------------------------------------------------|
| 141 | My Report Topic Title | Program Area One|Program Area Two|Program Area Three | Category One|Category Two|Category Three|Category Four |
|---------------------|-------------------------------------|---------------------------------------------------------|--------------------------------------------------------------|
Как я могу выполнить sh это по моему текущему запросу?