PostgreSQL Json_build_object / json_agg添加聚合级别

问题描述 投票:-1回答:1

我正在使用PostgreSQL 10.4,由Visual C ++ build 1800编译,64位;

以下查询产生的结果集为JSON类型和多行的1列,我要求查询将每行返回到数组(基本上是1行和1列)中,例如json_agg()。

不幸的是,如果我将json_agg()放在json_build_object周围,则会收到错误消息,提示它不可能:

ERROR:  aggregate function calls cannot be nested
LINE 28:  '$values', json_agg(fv.*)
SELECT json_build_object(
    'id', vl.id,
    'id_form', vl.id_form,
    'id_waardenlijst', vl.id_waardenlijst,
    '$values', json_agg(fv.*)
) FROM var_list vl
    LEFT JOIN testscheme.form_values fv
    on fv.id_form_record = vl.id
    GROUP BY vl.id, vl.id_form, vl.id_waardenlijst

如何添加另一层聚合,以返回我的第一列和第一行以及所需对象的数组?

我希望我很清楚!

sql postgresql postgresql-10
1个回答
0
投票

基本上,您需要另一种聚合级别:

SELECT json_agg(js) js_final
FROM (
    SELECT json_build_object(
        'id', vl.id,
        'id_form', vl.id_form,
        'id_waardenlijst', vl.id_waardenlijst,
        '$values', json_agg(fv.*)
    ) js
    FROM var_list vl
    LEFT JOIN testscheme.form_values fv ON on fv.id_form_record = vl.id
    GROUP BY vl.id, vl.id_form, vl.id_waardenlijst
) t
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.