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
我有一个简单的 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