从以逗号分隔的列表中加入 table 获取多个列值
Get multiple column values from joined table in a comma separated list
我有 3 个 tables,其中包含如下行:
RESEARCH_REPORTS table:
REPORT_ID TOPIC
141 My Report Topic Title
142 Another Report Topic Title
143 Yet Another Report Topic Title
...
PROGRAM_AREAS_REPORTS_REL table:
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
我需要一个 select 查询,结果格式如下:
首选查询结果:
report_id topic program_areas
141 My Report Topic Title Program Area One, Program Area Two, Program Area Three
如何在我当前的查询中完成此操作?
使用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
我有 3 个 tables,其中包含如下行:
RESEARCH_REPORTS table:
REPORT_ID TOPIC
141 My Report Topic Title
142 Another Report Topic Title
143 Yet Another Report Topic Title
...
PROGRAM_AREAS_REPORTS_REL table:
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
我需要一个 select 查询,结果格式如下:
首选查询结果:
report_id topic program_areas
141 My Report Topic Title Program Area One, Program Area Two, Program Area Three
如何在我当前的查询中完成此操作?
使用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