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值且日期非空的记录,不符合条件的返回NULLAVG函数会自动忽略NULL值,因此只会计算符合筛选条件的记录的平均天数差- 无需在WHERE子句中添加
Tested筛选,这样能确保所有Name分组都被保留(即使某分组只有Yes或No的记录)
内容的提问来源于stack exchange,提问作者baxius
相关产品推荐
相关产品推荐

