【问题标题】:How to merge two jsonb objects in Postgres?如何在 Postgres 中合并两个 jsonb 对象?
【发布时间】:2020-12-09 10:35:53
【问题描述】:

我有选择任务常用字段的功能,我有 task_type,我需要按 task_type 选择不同的字段,然后返回 Json。我不知道 SQL 和 Postgres 技巧。请给我提示!谢谢

这是我的想法:

CREATE OR REPLACE FUNCTION crm.task_select(_task_uid bigint)
    RETURNS jsonb
    LANGUAGE plpgsql
AS $function$
DECLARE
    _data jsonb;
    _task jsonb;
    begin
        SELECT
            task.task_uid AS "id",
            task.action_date,
            task.descrtiption,
            sub.subject_data,
            
            dtask.task_type,
            dtask.name AS "task_name",
            dtask.label AS "task_label",
            lbadmin.user_name_reverse(crea) AS "created_by",
            lbadmin.user_name_reverse(upda) AS "updated_by",
            task.created,
            task.updated,
            
            case when dtask.task_type == 'email'
                _task = select crm.selectEmail(task_uid);
            end;

            FROM crm.tasks "task"
            LEFT JOIN abook2.subjects "sub" ON (task.subject_uid = sub.subject_uid)
            LEFT JOIN crm.def_tasks "dtask" ON (task.def_task_uid = dtask.def_task_uid)
            LEFT JOIN lbadmin.users_user "crea" ON (task.insert_user_uid = crea.role_uid)
            LEFT JOIN lbadmin.users_user "upda" ON (task.update_user_uid = upda.role_uid)
            LEFT JOIN crm.emails "email" ON (task.email_uid = email.email_uid)
            WHERE
            (task.task_uid = _task_uid)
            AND (task.org_uid IS NULL)
            AND (task.card_uid IS NULL) into _data;
        
            _data = _task + _data;
    
        
            return _data;   
    END;
$function$

【问题讨论】:

  • 请提供样本数据和期望的结果。目前尚不清楚此查询的目的是什么。
  • 我只需要构造,如何做到这一点,我的意思是我有基础选择和 dtask.task_type 我将有原因然后声明什么将添加数据取决于 task_type 我需要合并它

标签: sql json postgresql


【解决方案1】:
Solution that helped me to get array of json objects:
select to_json(array_agg(row_to_json(t)))
               from (select typ,prop from bgb where id=b.id) t )```

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-08
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    • 2016-11-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多