Select 在 select 内,在另一个 table SQL 上有多个匹配项

Select within select with multiple matches on the other table SQL

我有这 3 个 table Table1:

 id_Table1  field_table1_1  field_table1_2
       1          A                B
       2          C                D
       3          E                F

Table 1:

 id_Table2  field_table2_1  field_table2_2
       4          G                H
       5          I                J    

列表项

Table 3:

 id_Table3  id_Table1  id_Table2
     1           1          4
     2           1          5
     3           2          5

所以 table 3 保持 table 1 和 2 之间的关系。

我想做的是通过查询获取 table 1 中的所有字段,再加上一个包含 table 2 的所有 ID 并用逗号分隔的额外字段。

所以结果应该是这样的:

 id_Table1  field_table1_1  field_table1_2   id_Table2
       1          A                B            4, 5
       2          C                D             5
       3          E                F

一个选项使用横向连接和 string_agg():

select t1.*, x.*
from table1 t1
outer apply (
    select string_agg(t3.id_table2) id_table2
    from table3 t3
    where t3.id_table1 = t1.id_table1
) x

不用带table2也能得到想要的结果