TSQL—列中所有非零值的平均值

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

我正在写一份报告,希望得到年龄栏的平均值。问题是并非所有行都有年龄

如果列的值为0 2 4,我希望返回3,而不是2。我不能简单地用WHERE排除零行,因为我正在使用这些行中的其他列。有AvgIfNotZero类型的函数吗(
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]