如何将所有结果行列数据聚合在一列中?

How to aggregate all the resulted rows column data in one column?

我有一个案例驱动的查询。下面是最简单的形式

select Column 1 from mytable 

结果:

    Column 1        
   latinnametest
   LatinManual
   LatinAuto

是否可以在另一列中显示所有结果行的第 1 列数据的聚合数据,例如每行前面的第 5 列,用逗号分隔?

预期:

Column 1         Column 2
latinnametest  latinnametest,LatinManual,LatinAuto
LatinManual    latinnametest,LatinManual,LatinAuto
LatinAuto      latinnametest,LatinManual,LatinAuto

我使用了 array_aggconcat() 但它聚合了第 2 列中的相同行数据,但不是预期添加所有行列数据逗号分隔。请帮忙。

编辑: 我已经尝试了下面提到的解决方案,但我在列中得到了重复的数据。看截图。我将鼠标悬停在最后一列上,看到了重复数据。有什么解决办法吗? [![在此处输入图片描述][1]][1]

您可以将 string_agg() 用作 window 函数:

select column_1, 
       string_agg(column_1, ',') over () as all_values
from the_table;

编辑,范围更改后:

如果您需要不同的值,请使用派生的 table:

select column_1, 
       string_agg(column_1, ',') over () as all_values
from (
  select distinct column_1
  from the_table
) t;

或者使用常见的 table 表达式:

with vals as (
  select string_agg(distinct column_1, ',') as all_values
  from the_table 
)
select t.column_1, v.all_values
from the_table t
  cross join vals v