我有一個整數值的表。 它們可能是負數,0,正數和NULL。 我需要將NULL作爲0,計算給定日期的平均值,如果平均值小於0,則將0放在那裏。如何在情況下獲得AVG?
我的查詢如下:
select
Id,
ValueDate,
case
when avg(isnull(Value, 0)) > 0 then avg(isnull(Value, 0))
else 0
end AvgValue
from SomeTable
where ValueDate = @givenDate
group by Id, ValueDate
如何避免case語句雙聚合函數定義(aggregate語句可能會更加複雜)?
我敢肯定的'SQL Server'將緩存功能執行或結果您的案例中的AVG計算不會執行兩次。 – gotqn
如果TSQL具有標量MAX()函數,將會有一個簡單的解決方案。也許你可以實現你自己的:http://stackoverflow.com/questions/124417/is-there-a-max-function-in-sql-server-that-takes-two-values-like-math-max-in -ne – Turophile