将所有行列合并为连接表中的单个列

时间:2016-08-26 22:51:39

标签: sql database postgresql

我想加入一个包含多行的表,需要将所有行中的一列合并为单列。

select a.parent_id,a.parent_name,concat(b.child_name) from parent a 
join children b on (a.parent_id=b.parent_id);

这应返回所有父行,每个父行应该包含其所有子行。

我想用parent_id分组,但获得多条记录(每个孩子一条记录)。我可以在这里实现什么逻辑,除了分组以获得单行父母的所有孩子。

1 个答案:

答案 0 :(得分:1)

SELECT a.parent_id, a.parent_name, STRING_AGG(b.child_name, ',') as Children
FROM
    Parent a
    INNER JOIN children b
    ON a.Id = b.ParentId
GROUP BY
    a.parent_id
    ,a.parent_name