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

查询返回重复工单工作日志行,需获取每条工单最新工作日志

解决方案

要获取每个事件的最新工作日志,核心是先定位每个事件(通过InstanceId)对应的最大工作日志ID,再基于这个ID关联查询具体的日志内容。以下是调整后的SQL:

SELECT
    hd.`Incident Number` AS Incident_Number,
    hd.`Status` AS Status,
    hd.`Priority` AS Priority,
    hd.`Assigned Group` AS Assigned_Group,
    hd.`Assignee` AS Assignee,
    hd.`Submit Date` AS Submit_Date,
    hd.`Last Modified Date` AS Last_Modified_Date,
    hd.`Description` AS Description,
    hd.`Submitter` AS Submitter,
    swl.`Worklog Description` AS Worklog_Description,
    swl.`Work Log ID` AS Work_Log_ID
FROM
    `HPD:Help Desk` hd
INNER JOIN (
    -- 先获取每个事件对应的最大工作日志ID
    SELECT 
        `InstanceId`, 
        MAX(`Work Log ID`) AS Max_Work_Log_ID
    FROM `HPD:Search-Worklog`
    GROUP BY `InstanceId`
) latest_wl ON hd.`InstanceId` = latest_wl.`InstanceId`
INNER JOIN `HPD:Search-Worklog` swl ON 
    latest_wl.`InstanceId` = swl.`InstanceId` 
    AND latest_wl.Max_Work_Log_ID = swl.`Work Log ID`
WHERE 
    hd.`Status` IN ('Assigned','Pending','In Progress')
    AND hd.`Submit Date` >= $__from/1000 
    AND hd.`Submit Date` <= $__to/1000
ORDER BY
    hd.`Submit Date` ASC
LIMIT 20

逻辑说明

  1. 子查询latest_wl:按InstanceId分组,找出每个事件对应的最大Work Log ID——通常日志ID是递增生成的,最大ID就对应最新的工作日志。
  2. 两次关联:先把工单表和子查询关联,锁定每个工单对应的最新日志ID;再用这个ID关联工作日志表,取出具体的日志内容。
  3. 去掉DISTINCT:原查询的DISTINCT是多余的,通过上述关联后每个工单只会返回一条最新日志记录,不会产生重复。

如果你的日志表是用时间字段(比如Create Date)判断新旧,也可以把子查询里的MAX(Work Log ID)换成MAX(Create Date),关联时匹配对应时间字段即可。

内容的提问来源于stack exchange,提问作者Glenn Moore

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:33:15