【发布时间】: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