You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PostgreSQL合并两个Jira数据库的工单状态变更查询语句

解决方案

由于两个查询的过滤逻辑完全一致,仅输出字段需求不同,直接使用条件聚合即可一次性取出所需的两个日期字段,无需分开查询再手动拼接结果。

合并后查询代码(适配PostgreSQL,兼容你原有Jira数据库查询逻辑)

SELECT 
    i.issuenum,
    -- 取工单从10400状态转出到指定状态的日期,如需取最晚流转日期将MIN改为MAX即可
    MIN(to_char(cg.created, 'DD-MON-YYYY')) FILTER (WHERE ci.newvalue IN ('10904', '10504', '3', '10000')) AS datemoved,
    -- 单独取工单流转为DONE状态(状态ID 10000)的日期
    MIN(to_char(cg.created, 'DD-MON-YYYY')) FILTER (WHERE ci.newvalue = '10000') AS done_date,
    ci.oldvalue,
    ci.newvalue
FROM changeitem ci 
INNER JOIN changegroup cg ON cg.id = ci.groupid
INNER JOIN jiraissue i ON i.id = cg.issueid
INNER JOIN issuestatus s ON s.id = i.issuestatus
INNER JOIN project p ON p.id = i.project
WHERE 
    ci.oldvalue = '10400'
    AND ci.newvalue IN ('10904', '10504', '3', '10000') 
    AND p.id = 11009 
    AND s.id = '10000'
GROUP BY i.issuenum, ci.oldvalue, ci.newvalue
ORDER BY i.issuenum ASC;

说明

  1. 你原本提供的查询2存在语法错误,PostgreSQL中FILTER的正确语法为聚合函数(计算字段) FILTER (WHERE 筛选条件),原查询缺少聚合函数、括号匹配错误,无法正常执行。
  2. 若你需要每个工单仅返回一行汇总结果,去掉ci.oldvalue、ci.newvalue的查询和GROUP BY配置即可。
  3. 若业务需求是取最晚的状态流转日期,将聚合函数MIN替换为MAX即可。

内容的提问来源于stack exchange,提问作者Paulo Hgo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 19:24:01