TSQL—列中所有非零值的平均值
我正在写一份报告,希望得到年龄栏的平均值。问题是并非所有行都有年龄 如果列的值为0 2 4,我希望返回3,而不是2。我不能简单地用WHERE排除零行,因为我正在使用这些行中的其他列。有AvgIfNotZero类型的函数吗(TSQL—列中所有非零值的平均值,tsql,average,Tsql,Average,我正在写一份报告,希望得到年龄栏的平均值。问题是并非所有行都有年龄 如果列的值为0 2 4,我希望返回3,而不是2。我不能简单地用WHERE排除零行,因为我正在使用这些行中的其他列。有AvgIfNotZero类型的函数吗( SELECT AVG (CASE WHEN Value <> 0 THEN Value ELSE NULL END) .... 从中选择平均值(a) 您应该为答案提供更多的上下文,而不是仅仅删除OP或未来读者可能不理解的代码块。 AVG
SELECT
AVG (CASE WHEN Value <> 0 THEN Value ELSE NULL END)
....
从中选择平均值(a)
您应该为答案提供更多的上下文,而不是仅仅删除OP或未来读者可能不理解的代码块。
AVG (NULLIF(Value, 0))
(
SELECT NULLIF([Column1], 0)
UNION ALL
SELECT NULLIF([Column2], 0)
UNION ALL
SELECT NULLIF([Column3], 0)
UNION ALL
SELECT NULLIF([Column4], 0)
) T (a)
) AS [4 Column Average]