PostgreSQL - 将行转换为JSON键/值对

3

我有一个简单的表格,如下:

Key_1 | Key_2 | Value

每行都有多种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对象结构。我无法使用另一个聚合函数,因为它会报错。

有没有办法可以做到这一点,或者只能在数据库之外处理结果集?

1个回答

1
这是我想要的:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接