如何搜索存储为json字符串的不同列中的条目,并将其合并到一列中
我有一个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} 我试过:如何搜索存储为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,“
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