【发布时间】:2019-05-13 08:27:16
【问题描述】:
有了这个查询和记录集:
选择 id,级别 FROM t; 编号 |等级 ---------- 1 |一种 2 |一种 3 |一种 4 | b 5 | b 6 | C 7 | C如何将其转换为 JSON 对象,以级别列和 id 列上聚合的数组为键?我事先不知道存在哪些级别。
{
"a": [1, 2, 3],
"b": [4, 5],
"c": [6, 7]
}
我希望这样做:
SELECT json_object(
array_agg(level),
array_agg(ids)
)
FROM (
SELECT level, array_agg(id::TEXT) ids
FROM t
GROUP BY level
) t
但它会返回:
错误:不能累积不同维度的数组
如果您想回答,这里是t,为您提供方便
SELECT id, level
FROM ( VALUES
(1, 'a'),
(2, 'a'),
(3, 'a'),
(4, 'b'),
(5, 'b'),
(6, 'c'),
(7, 'c')
) t(id, level);
【问题讨论】:
标签: json postgresql aggregate aggregate-functions