这看起来很容易,但我无法正确格式化。我有这样的行:
alias # is character varying(20) column-type
------
Bob2
Judy5
Jane6
Erica7
我想将所有这些行聚合成一个数组:
[Bob2, Judy5, Jane6, Erica7]
我似乎只能得到:
{(Bob2), (Judy5), (Jane6), (Erica7)}
SELECT array_agg(r) FROM (
SELECT name FROM mytable
) r
我怎样才能达到我想要的格式?
答案 0 :(得分:1)
您正在聚合集而不是列(因为查询中的r
是指派生表,而不是列。)您所需要做的就是:
select array_agg(name)
from my_table;
或者如果你坚持使用派生表:
SELECT array_agg(r.name)
FROM (
SELECT name
FROM mytable
) r
答案 1 :(得分:0)
你可以试试这个:
create table test(alias varchar(20));
insert into test values ('Bob2'), ('Judy5'), ('Jane6'), ('Erica7');
select replace(replace(array_agg(alias)::varchar, '{', '['), '}', ']') from test
Result:
[Bob2,Judy5,Jane6,Erica7]