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

SQL Server 2019:单查询生成Tested=Yes/No双列统计结果

SQL Server 2019 分组统计双列结果

可以使用条件聚合(结合CASE WHEN和聚合函数)实现需求,将Tested='Yes'和Tested='No'的统计结果分别放在两列,同时保留按Name分组的逻辑:

SELECT 
    Name,
    -- 统计Tested='Yes'且日期非空的平均天数差
    AVG(CASE 
        WHEN Tested = 'Yes' AND [Open Date] IS NOT NULL AND [Close Date] IS NOT NULL 
        THEN DATEDIFF(day, [Open Date], [Close Date]) 
        ELSE NULL 
    END) AS AvgDays_TestedYes,
    -- 统计Tested='No'且日期非空的平均天数差
    AVG(CASE 
        WHEN Tested = 'No' AND [Open Date] IS NOT NULL AND [Close Date] IS NOT NULL 
        THEN DATEDIFF(day, [Open Date], [Close Date]) 
        ELSE NULL 
    END) AS AvgDays_TestedNo
FROM Inventory
GROUP BY Name

关键说明:

  • CASE WHEN会筛选出对应Tested值且日期非空的记录,不符合条件的返回NULL
  • AVG函数会自动忽略NULL值,因此只会计算符合筛选条件的记录的平均天数差
  • 无需在WHERE子句中添加Tested筛选,这样能确保所有Name分组都被保留(即使某分组只有Yes或No的记录)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:50:24