我有一个字段是逗号分隔的字符串和另一个JSON字段,它的键来自逗号分隔字段的值。
现在我想要group by
,每个value
在JSON字段。
我该怎么做呢?
这是一个示例数据:
fieldA fieldB
a,b {'a': 'value1', 'b': 'value3'}
c,d {'c': 'value3', 'd': 'value4'}
实际上,我想要group by
value1 value2 value3
我需要的输出是这样的:
fieldx fieldy
row1: value1 a
row2: value3 b,c
row3: value4 d
如果field_b的数据类型是json,我们可以使用json_each_text()将其转换为(键,值)数据集,如下所示。
with cte as (
select x.key, x.value
from table_o t,
lateral (select * from json_each_text(t.field_b)) x)
select value as fieldx,
string_agg(key,',') as fieldy
from cte
group by fieldx
order by fieldx;