PostgreSQL - 将行转换为 JSON key/value 对

PostgreSQL - Convert rows into JSON key/value pair

我有一个简单的 table 像这样:

Key_1 | Key_2 |值

行有多个 key_1 和 key_2 的组合。

我想将此 table 中的行放入这样的 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 对象结构的最后一步,如上所述。我不能使用另一个聚合函数,因为它会抱怨嵌套。

我有办法做到这一点,还是我必须对数据库外的结果集做些什么?

这就是我想要的:

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