在postgresql中连接数据

时间:2015-12-14 14:05:35

标签: sql postgresql concatenation

我有这样的表数据:

Table structure

我想在postgresql中连接下面的数据:

Desired Output

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

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

它给我以下输出:

Giving output

对于项目A2,它显示C89两次,我只想显示一次。

请帮帮我!!

2 个答案:

答案 0 :(得分:5)

使用distinct,您也不需要array_agg()

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

答案 1 :(得分:1)

这应该有效,有时您需要告诉它如何订购不同的

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