我有一张桌子,我想将每个ID与连接的字段值连接成一行。
例如,在我的表格中,我有以下内容:
TM67 | 4 | 32556 TM67 | 9 | 98200 TM67 | 72 | 22300 TM99 | 2 | 23009 TM99 | 3 | 11200
我想输出:
TM67 | 4,9,72 | 32556,98200,22300 TM99 | 2,3 | 23009,11200
在MySQL中,我能够使用聚合函数GROUP_CONCAT,但是在这里似乎不起作用… PostgreSQL是否具有等效功能,或者还有另一种方法可以实现此目的?
GROUP_CONCAT
这可能是一个很好的起点(仅限8.4+版本):
SELECT id_field, array_agg(value_field1), array_agg(value_field2) FROM data_table GROUP BY id_field
array_agg返回一个数组,但是您可以根据需要对其进行文本转换和编辑(请参见下面的说明)。
在版本8.4之前,您必须在使用前自行定义:
CREATE AGGREGATE array_agg (anyelement) ( sfunc = array_append, stype = anyarray, initcond = '{}' );
(摘自PostgreSQL文档)
说明: