【问题标题】:How to extract json array elements in postgresql如何在postgresql中提取json数组元素
【发布时间】:2015-08-07 21:54:26
【问题描述】:

我想要做的是将 29.0 和 34.65 相加并按 P_id 分组

表:transaction_items 列名:借方,P_id 列数据类型:文本、文本 数据:


借记

[{"amount":29.0,"description":"Fee_Type_1"}
[{"amount":"34.65","description":"Fee_Type_1"}

P_id

16
16

我尝试使用此处提到的解决方案 [How to get elements from Json array in PostgreSQL

select     transaction_line_items.P_id,
           each_attribute ->> 'amount' Rev
from       transaction_line_items
cross join json_array_elements(to_json(Debits)) each_section
cross join json_array_elements(each_section -> 'attributes') each_attribute
where      (each_attribute -> 'amount') is not null;

但是,我收到一条错误消息,提示“无法解构标量”。

有人可以告诉我如何解析我正在寻找的值吗?

谢谢。

【问题讨论】:

    标签: arrays json postgresql


    【解决方案1】:

    您的数据似乎已损坏。由于缺少右方括号,Debits 列的值不是有效的 json。假设您的数据应如下所示:

    [{"amount":29.0,"description":"Fee_Type_1"}]
    [{"amount":"34.65","description":"Fee_Type_1"}]
    

    以下查询可以满足您的要求:

    select p_id, sum(amount)
    from (
        select p_id, (elements->>'amount')::numeric amount
        from transaction_items
        cross join json_array_elements(debits::json) elements
        ) sub
    group by p_id;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 1970-01-01
      • 2017-11-02
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多