16
我正在編寫報告,並且希望獲取年齡列的平均值。問題是並非所有的行都有一個年齡。TSQL - 列中所有值不爲零的所有值的平均值
如果列的值是0 2 4我想要3返回,而不是2我不能簡單地排除零行與WHERE,因爲我使用的是在這些行中的其他列。有沒有像AvgIfNotZero類型的函數這樣的事情?
我正在編寫報告,並且希望獲取年齡列的平均值。問題是並非所有的行都有一個年齡。TSQL - 列中所有值不爲零的所有值的平均值
如果列的值是0 2 4我想要3返回,而不是2我不能簡單地排除零行與WHERE,因爲我使用的是在這些行中的其他列。有沒有像AvgIfNotZero類型的函數這樣的事情?
SELECT
AVG (CASE WHEN Value <> 0 THEN Value ELSE NULL END)
....
AVG不會考慮NULL值。或者這
AVG (NULLIF(Value, 0))
,( SELECT AVG(a)由
(
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]
你應該給一個答案給更多的背景,而不是隻是刪除代碼的OP或未來的讀者可能不理解塊。 – zgue 2018-03-08 13:01:00