【发布时间】:2021-09-01 07:25:36
【问题描述】:
假设我有一列包含这个 jsonb 数据:
{
"indicators": [
{
"year": 2019,
"indicatorsByYear": [
{
"value": 3120,
"code": "Nb_h"
},
{
"value": 18,
"code": "S_ppa"
},
{
"value": 95,
"code": "T_occ"
}
]
},
{
"year": 2020,
"indicatorsByYear": [
{
"value": 300,
"code": "Nb_h"
},
{
"value": 18,
"code": "S_ppa"
},
{
"value": 55,
"code": "T_occ"
}
]
}
],
"dataProvidedByUser": false
}
想法是将此列迁移到这样的简化对象:
{
"indicatorsByYear": {
"2019": [
{
"value": 3120,
"code": "Nb_h"
},
{
"value": 18,
"code": "S_ppa"
},
{
"value": 95,
"code": "T_occ"
}
],
"2020": [
{
"value": 300,
"code": "Nb_h"
},
{
"value": 18,
"code": "S_ppa"
},
{
"value": 55,
"code": "T_occ"
}
]
},
"dataProvidedByUser": false
}
如何将indicators 数组转换为以年份为键、indicatorsByYear 为值的映射对象。
关于信息,我可以拥有的最大年数是 11 年(从 2010 年到 2020 年),一些列有所有年份,而另一些只有一些。
我尝试类似的事情没有成功
update site
SET data = data
|| jsonb_build_object('indicatorsByYear',
jsonb_build_object(
data -> 'indicators' ->> 'year',
data -> 'indicators' ->> 'indicatorsByYear'
))
任何帮助将不胜感激!提前致谢。
【问题讨论】:
标签: postgresql jsonb