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

SQL新手咨询:如何查询指定列值并生成含状态统计的报表?

解决方案:修正SQL以满足报表需求

原代码存在的核心问题

  • 未实现LIVE Status存在ERROR则标记Failure的逻辑
  • 硬编码Sprint='A1',无法支持多Sprint ID查询
  • 连接语法混用(逗号连接+FULL JOIN)导致逻辑混乱
  • Status判断逻辑不符合需求(用Lap计数替代状态规则)

修正后的SQL代码

WITH LastSprintRecord AS (
    -- 获取每个ID+Sprint组合的最后一条记录的Final Status
    SELECT 
        ID,
        [Sprint Event] AS Sprint,
        [Final Status] AS LastFinalStatus
    FROM Sprint s
    WHERE Time = (
        SELECT MAX(Time) 
        FROM Sprint 
        WHERE ID = s.ID AND [Sprint Event] = s.[Sprint Event]
    )
)
SELECT 
    s.[Sprint Event] AS Sprint,
    N.Name,
    st.State,
    COUNT(s.LAP) AS [Laps (Count)],
    MIN(s.Time) AS StartTime,
    MAX(s.Time) AS EndTime,
    -- 实现Status规则:先检查是否有ERROR,再取最后一条的Final Status
    CASE
        WHEN MAX(CASE WHEN s.[LIVE Status] = 'ERROR' THEN 1 ELSE 0 END) = 1 THEN 'Failure'
        WHEN lsr.LastFinalStatus = 'Success' THEN 'Success'
        ELSE 'Unknown' -- 可根据需求自定义其他状态
    END AS Status,
    DATEDIFF(MINUTE, MIN(s.Time), MAX(s.Time)) AS [Elapsed Time (Mins)]
FROM Sprint s
INNER JOIN Name N ON N.ID = s.ID
INNER JOIN State st ON st.ID = s.ID
INNER JOIN LastSprintRecord lsr ON lsr.ID = s.ID AND lsr.Sprint = s.[Sprint Event]
-- 支持多个Sprint ID查询,可按需添加或修改
WHERE s.[Sprint Event] IN ('A1', 'B1')
GROUP BY s.[Sprint Event], N.Name, st.State, lsr.LastFinalStatus

关键修正点说明

  1. 处理LIVE Status的ERROR判断:
    用MAX(CASE WHEN s.[LIVE Status] = 'ERROR' THEN 1 ELSE 0 END)统计是否存在ERROR记录,只要有一条为ERROR,结果就是1,直接标记为Failure。

  2. 支持多Sprint ID查询:
    将原硬编码的Sprint='A1'改为IN ('A1','B1'),可根据需求扩展更多Sprint ID,或者去掉WHERE条件查询所有Sprint。

  3. 正确获取最后一条记录的Final Status:
    通过CTELastSprintRecord先筛选每个ID+Sprint组合的最新记录,确保取到的是该Sprint下最后一条的Final Status。

  4. 规范连接语法:
    统一使用INNER JOIN(如果需要包含无Sprint记录的ID,可改为LEFT JOIN),避免混用旧语法导致的逻辑错误。

  5. 补充缺失的Sprint字段:
    报表需要Sprint列,所以在SELECT中加入s.[Sprint Event] AS Sprint,并在GROUP BY中包含该字段(同一个ID可能对应多个Sprint)。

内容的提问来源于stack exchange,提问作者SCCM-SQL

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 00:36:21