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

基于BigQuery获取工单最新关闭备注的SQL查询需求及修正

时间序列工单数据聚合查询问题

原始工单数据

number     Created_Date      Closed_Date       Close_Notes
T1         8/10/2024          null              null    
T1         8/10/2024          8/11/2024         Completed Successfully
T2         8/11/2024          null              null    
T2         8/11/2024          8/13/2024         null
T2         8/11/2024          8/13/2024         Completed Successfully

期望输出

需按工单编号(number)聚合,输出对应创建日期、最新关闭日期及有效关闭备注:

number     Created_Date      Closed_Date       Close_Notes
T1          8/10/2024        8/11/2024          Completed Successfully
T2          8/11/2024        8/13/2024          Completed Successfully

当前尝试的SQL及问题

当前查询语句:

SELECT
    Number,
    Close_Notes,
    min(Created_Date),
    max(Closed_Date)
  FROM
    SN_Change_Request group by Number

该语句存在两个核心问题:

  • BigQuery中Close_Notes未包含在GROUP BY子句,也未使用聚合函数,执行会直接报错;
  • 未筛选有效(非空)的关闭备注,无法保证返回正确的备注内容。

BigQuery 正确查询语句

基础场景(同一工单仅一条有效备注)

SELECT
  number,
  MIN(Created_Date) AS Created_Date,
  MAX(Closed_Date) AS Closed_Date,
  MAX(Close_Notes) AS Close_Notes  -- 自动忽略NULL值,提取非空的有效备注
FROM SN_Change_Request
GROUP BY number

复杂场景(同一工单多条非空备注,取最新关闭日期对应备注)

如果存在同一工单有多个非空备注的情况,可通过窗口函数精准匹配最新关闭日期的有效备注:

WITH ranked_records AS (
  SELECT
    *,
    ROW_NUMBER() OVER (
      PARTITION BY number 
      ORDER BY Closed_Date DESC, 
        CASE WHEN Close_Notes IS NOT NULL THEN 1 ELSE 0 END DESC
    ) AS rn
  FROM SN_Change_Request
)
SELECT
  number,
  Created_Date,
  Closed_Date,
  Close_Notes
FROM ranked_records
WHERE rn = 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:24:56