【发布时间】:2019-02-13 16:40:29
【问题描述】:
我正在使用 SQL Server 查找某些列的平均值,但我想忽略任何值为 0 或 null 的列
我正在阅读的表格:
我的查询:
SELECT AVG(CASE WHEN [January-Margin] > 0 THEN [January-Margin] ELSE NULL END + CASE WHEN [February-Margin] > 0 THEN [February-Margin] ELSE NULL END) as [Margin-Average] FROM MyTable
在 AVG() 函数中使用多个 case 表达式时,该列始终返回 NULL。我做错了什么?
更新: 正如@Gordon Linoff 所指出的 - 这是添加而不是聚合函数的问题。谁能提出另一种实现我想要的结果的方法?
更新: 我想要的结果:
January-Margin February-Margin March-Margin AvgMargin
43.111 0.00 0.00 43.111
57.2897 0.00 0.00 57.2897
55.5352 56.8987 0.00 56.2169
【问题讨论】:
-
案例表达式。 (返回一个值。)
-
不使用
AVG函数你可以sum除以count() where values >0这样你可以跳过0个值 -
@Mark 。 . .您想要的结果不清楚。
标签: sql sql-server case average