将常规 Postgresql 行转换为 jsonb 行

问题描述 投票:0回答:1

如何将常规 Postgresql 表行转换为 jsonb 行? 我有一个包含这 6 行和 5 列的 Postgres 表: (对不起,我知道我不应该添加图像,但我不知道如何使列变直)

ticker fy现金投资债务

我想将这些行转换为下表中有 2 列的 jsonb 行:

create table bal_sheet( ticker varchar(10) ,data jsonb);

第一列是代码,第二行是 jsonb 形式,如下所示:

AAPL, {"cash":{"fy22":100,"fy21":150,"fy20":200},"investments": {"fy22":200,"fy21":250,"fy20":300},"debt": {"fy22":300,"fy21":350,"fy20":400}}

MSFT, {"cash":{"fy22":110,"fy21":120,"fy20":130},"investments": {"fy22":210,"fy21":220,"fy20":230},"debt": {"fy22":310,"fy21":320,"fy20":3300}}

如果有任何帮助,我将不胜感激!

谢谢enter image description here

postgresql jsonb
1个回答
1
投票

感谢Bergi先生的指导。我认为我的代码有效

create table t_bal_sheet_json (
  ticker varchar(10),
  data jsonb
);

insert into t_bal_sheet_json (ticker, data)
select 
  ticker, 
  jsonb_build_object(
    'cash', jsonb_object_agg(fy,cash),
    'investments', jsonb_object_agg(fy,investments),
    'debt', jsonb_object_agg(fy,debt)
  ) as data
from t_bal_sheet 
group by ticker;
© www.soinside.com 2019 - 2024. All rights reserved.