【问题标题】:Get multiple column values from joined table in a comma separated list从逗号分隔列表中的联接表中获取多个列值
【发布时间】:2020-06-19 19:45:46
【问题描述】:

我有 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 表:

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    

如何在当前查询中完成此操作?

【问题讨论】:

    标签: sql sql-server sql-server-2017


    【解决方案1】:

    使用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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-26
      • 2019-03-24
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多