我有一个像这样的简单表:
键_1 | Key_2 |值
行具有key_1和key_2的多个组合。
我想将此表中的行放入这样的JSON结构中:
{
"myJSON": {
"key_1": {
"key_2": value,
"key_2": value
}
"key_1": {
"key_2": value,
"key_2": value
}
}
我可以使用以下查询将输出分成几行:
SELECT
key_1,
jsonb_object_agg(key_2,value)
FROM table
GROUP BY key_1
ORDER BY key_1;
这将产生如下输出:
key_1 | {"key_2":value, "key_2": value}
key_1 | {"key_2":value, "key_2": value}
但是,我无法完成最后一步,按照上述方法将返回的行放入JSON对象结构中。我不能使用另一个聚合函数,因为它抱怨嵌套。
有没有办法做到这一点,还是我必须对数据库外部的结果集做些什么?
答案 0 :(得分:0)
这就是我想要的:
WITH t AS (
SELECT
key_1,
jsonb_object_agg(key_2,value) key_pair
FROM table
GROUP BY key_1
ORDER BY key_1
)
SELECT jsonb_object_agg(key_1, key_pair)
FROM t