我想在哪一列的值匹配的地方
示例数据
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
它汇总所有字段,而不管两行之间的数据是否不同。
答案 0 :(得分:0)
您可以使用:
select name, string_agg(distinct surname, ',') as surname, string_agg(age, ',')
from t
group by name;
这假设所有name
是唯一的-对于大多数数据集来说,这似乎是一个强有力的假设。