如何按json字段的值分组,键是动态的?



我有一个字段是逗号分隔的字符串和另一个JSON字段,它的键来自逗号分隔字段的值。

现在我想要group by,每个value在JSON字段。

我该怎么做呢?

这是一个示例数据:

fieldA   fieldB
a,b      {'a': 'value1', 'b': 'value3'}
c,d      {'c': 'value3', 'd': 'value4'}

实际上,我想要group byvalue1 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;

最新更新