在postgresql中连接数据

concatenate data in postgresql

我有一个这样的 table 数据:

我想在 postgresql 中连接如下数据:

我使用了如下查询但是有一个小问题:

select 
    Item,
    array_to_string(array_agg(Component) ,', ') AS Component,
    array_to_string(array_agg(Seller) ,', ') AS Seller
from tablename
group by Item

它给我以下输出:

A2项显示了两次C89,我只想显示一次。

请帮帮我!!

使用distinct,你也不需要array_agg():

select item, 
       string_agg(distinct component, ',') as component,
       string_agg(distinct seller, ',') as seller
from tablename
group by item;

这应该可行,有时您需要告诉它如何对不同的进行排序

select 
    Item,
    array_to_string(array_agg(DISTINCT Component ORDER BY Item DESC ) ,', ') AS Component,
    array_to_string(array_agg((DISTINCT Seller ORDER BY Item DESC) ,', ') AS Seller
from tablename
group by Item