我正在尝试将任意子查询转换为 PostgreSQL 中的 JSON。
json_agg()
似乎是这项工作的明显工具。例如:
select json_agg(a) from (
select count(lead_source), lead_source from leads_table group by lead_source order by count desc
) as a;
但是,数据的结构为the_data[row_number]["column_name"]
. 假设我希望数据结构为the_data["column_name"][row_number]
. 也就是我想要json_agg()的转置结构。我怎么做?
我最大的努力是:
select row_to_json(row(array_to_json(array_agg(count)), array_to_json(array_agg(lead_source)))) from (
select count(lead_source), lead_source from leads_table group by lead_source order by count desc
) as a;
但这有(至少)两个缺点:
- 它不适用于任意子查询。每次
array_agg()
使用时,必须对列名进行硬编码。 - 列名变为
f1
,f2
, ...