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

时间:2018-06-22 07:54:57

标签: json postgresql-9.4

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

键_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对象结构中。我不能使用另一个聚合函数,因为它抱怨嵌套。

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

1 个答案:

答案 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