我有一个简单的查询,SELECT name, grp FROM things;
它会返回以下表格:
name | grp
------+-----
a | y
b | x
c | x
d | z
e | z
f | z
我希望最终得到以下的单个JSON对象:
{y: [a], x: [b,c], z: [d,e,f]}
我觉得使用查询语句SELECT grp, array_agg(name) as names FROM things GROUP BY grp;
可以将"name"压缩成一个数组而且能够得到三行结果,但是我不知道该如何将行压缩成单个JSON对象。
可能更接近的语句是SELECT json_build_object(grp, array_agg(name)) as objects FROM things GROUP BY grp;
,它会返回独立的JSON对象 {y: [a]}
。但它们仍然是独立对象,所以可能不是正确的路径。
这是在Postgresql 9.4使用的。