2013-10-07 19 views
0

我有一个包含c1, c2, c3, c4, c5列中的重复值的表。
我想列出行中包含按函数生成的值的所有日期。Postgres中的连接日期值

datum   c1 c2 c3 c4 c5 number 
2001-04-22  1  2  3  4  5  2 
1999-08-24  2  3  4  5  6  2 
2005-11-08  2  4  5  6  7  2 
1998-03-20  1  2  3  4  5  2 
2009-07-02  2  3  4  5  6  2 
1996-05-21  2  4  5  6  7  2 

结果应该是这样的:

datum      c1 c2 c3 c4 c5 number 
1998-03-20 , 2001-04-22 1  2  3  4  5  2 
1999-08-24 , 2009-07-02 2  3  4  5  6  2 
1996-05-21 , 2005-11 08 2  4  5  6  7  2 
源表

可重复的值中的所有列,会是怎样的解决方案?

回答

1
select string_agg(to_char(datum, 'yyyy-mm-dd'), ','), 
     c1, 
     c2, 
     c3, 
     c4, 
     c5, 
     number 
from some_table 
group by c1, c2,c3, c4, c5, number 
0

如果您满意的结果的array of date您可以使用简单和快速array_agg()

如果您想要特定顺序的数组(或列表),请在聚合函数中添加ORDER BY。我引用the manual at the same page:

此排序默认情况下未指定的,但可以通过编写 汇总调用内的ORDER BY条款被控制[...]

SELECT array_agg(datum ORDER BY datum) AS datum_arr 
     ,c1, c2, c3, c4, c5 
     ,min(number) AS number -- you did not specify how to aggregate number 
FROM tbl 
GROUP BY c1, c2,c3, c4, c5;