水平平均SQL视图

时间:2014-09-10 02:02:42

标签: sql sql-server sql-server-2008

我有下表:

ID   Value1   Value2   Value3
1    10       0        5
2    12       10       20
3    0        5        9
4    20       12       8
5    2        15       0

我希望得到以下结果:

ID   avgValue
1    7.5
2    14
3    7
4    13.33
5    8.5

公式是正常平均值,但平均值计算总是跳过零值。 有人知道怎么做吗?

谢谢。

1 个答案:

答案 0 :(得分:3)

想法是根据三列的0值选择分母计数。

http://sqlfiddle.com/#!3/d36c31/4

    select 
    id,
    cast((value1+value2+value3) as float)/ 
    (
    case when value1>0 then 1 else 0 end
    +
    case when value2>0 then 1 else 0 end
    +
    case when value3>0 then 1 else 0 end
    )
    as avgValue

    from test

请告诉我它是否适合您..