我希望一列的值匹配的地方:
示例数据
Name Surname Age
Ryan Smith 28
Ryan Smith 29
Sean Johnson 37
所需结果:
Name Surname Age
Ryan Smith 28, 29
Sean Johnson 37
名称ryan
出现两次,因此只希望汇总其他字段的数据,而两行的数据不同。
姓氏在两行中都是Smith,因此无需汇总,只想在一行中填充为Smith年龄不同,因此要将两行的年龄汇总为一行
[Sean Johnson
]记录在所有列中都是唯一的,因此无需汇总或修改任何内容
我已经尝试过string_agg函数,但这给出了结果:
Name Surname Age
Ryan Smith, Smith 28,29
Sean Johnson 37
无论两行之间的数据是否不同,它都会汇总所有字段
您必须group by name, surname
表的不同行(对于两行相同的情况:)
select
t.name, t.surname, string_agg(t.age, ',')
from (
select distinct name, surname, age
from tablename
) t
group by t.name, t.surname
请参见demo。结果:
> name | surname | age
> :--- | :------ | :----
> Sean | Johnson | 37
> Ryan | Smith | 28,29