与this question类似,我正在寻找一种方法将查询结果的多行结果连接成一行,但不保留重复项。我要做的是将旧数据与新数据相匹配,但在新数据集中只允许一个值,其中前面有多个值。
目前,我可以使用with子句提取以下数据集:
id | new | old
----------------------
1001 | x | a
1001 | x | b
1001 | x | c
1002 | y | b
1002 | y | e
1002 | y | f
1003 | z | b
1003 | z | c
1004 | z | c
我需要提取的更多内容如下:
id | new | old
----------------------
1001 | x | a,b,c
1002 | y | b,e,f
1003 | z | b,c
1004 | z | c
答案 0 :(得分:3)
除非我遗漏了某些内容,否则这是将id,new:
分组的简单案例select id, new, string_agg(old, ',' order by old)
from dupes
group by id, new
order by id;
SQLFiddl:http://sqlfiddle.com/#!15/49706/1