问题描述
我有多个列要聚合到一个新列中。我想将它们连接在一个数组中,并在它们之间用','分隔符。您能告诉我一些编写查询的优点吗?我的示例我想简单快捷地工作: / p>
SELECT array_agg('[' || us.name || ',' || us.age || ',' || us.gender || ']')
FROM users as us;
解决方法
如果要创建JSON数组,请使用JSON函数:
select jsonb_agg(concat_ws(',',us.name,us.age,us.gender))
from users as us;
如果您想要真正的JSON对象(使用键/值对),而不是数组内用逗号分隔的字符串:
select jsonb_agg(to_jsonb(u))
from (
select name,age,gender
from users
) u
另一个选择是创建嵌套数组:
select jsonb_agg(to_jsonb(array[name,gender]))
from users