如何搜索存储为json字符串的不同列中的条目,并将其合并到一列中

如何搜索存储为json字符串的不同列中的条目,并将其合并到一列中,json,for-loop,amazon-redshift,Json,For Loop,Amazon Redshift,我有一个json字符串存储为字符可变(65535),其中包含不同的对象,没有任何特定的顺序(Max number=16) 每一行都有一个唯一的标识符,比如row\u id 例如 第1行:{“CompanyDiscount”:{“CompanyA”:65,“CompanyB”:53,“CompanyC”:60,“CompanyD”:60,“CompanyE”:20}} 第2行:{CompanyDiscount:{“CompanyA”:60,“CompanyC”:60,“CompanyB”:50,“

我有一个json字符串存储为字符可变(65535),其中包含不同的对象,没有任何特定的顺序(Max number=16) 每一行都有一个唯一的标识符,比如row\u id

例如

第1行:{“CompanyDiscount”:{“CompanyA”:65,“CompanyB”:53,“CompanyC”:60,“CompanyD”:60,“CompanyE”:20}}

第2行:{CompanyDiscount:{“CompanyA”:60,“CompanyC”:60,“CompanyB”:50,“CompanyD”:60,“CompanyF”:-50,“CompanyE”:10,“CompanyG”:0.2}

我试过:

SELECT 
row_id,
SPLIT_PART(SPLIT_PART(json_extract_path_text(raw_data,'insurerDiscount'),',',1),':',1)
as firstCompany,
SPLIT_PART(SPLIT_PART(json_extract_path_text(raw_data,'insurerDiscount'),',',2),':',1)
as secondCompany --upto16th
FROM table
这给了我以下结果:

row_id firstCompany  secondCompany
1      {"CompanyA"  "CompanyB"
目标: 我应该如何将每个公司名称作为一个不同的列,并在每行中计算该公司名称?我还希望我可以使用for循环,而不是为16个公司列编写16行代码。我只使用postgresql有一个限制

例如


谢谢你让我知道,但我没有修改存储类型的控件,只能使用所提供的内容。
row_id CompanyA CompanyB CompanyC ... CompanyF... Company16 

1        1        1        1      ...   0     ...     0  

2        1        1        1      ...   1     ...     0