如何从SQL Server 2008编程中的列中删除0值但不删除空白?

时间:2015-05-27 06:35:47

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

我试图找到列的平均值。我想删除0值但使用SQL Server 2008编程保留空白。请帮忙

2 个答案:

答案 0 :(得分:2)

使用AVG()

如果你想忽略0并包含"空白" (如果你的意思是NULL)到基地,你可以利用这个功能的以下特征:

  

AVG()通过将这些值的总和除以非空值的计数来计算一组值的平均值。

那样

SELECT AVG(
    CASE WHEN [column] = 0 THEN NULL -- Skip 0 when calculate the average
         WHEN [column] IS NULL THEN 0 -- Include blank as 0 value
         ELSE [column] END) AS Average
FROM [table]

答案 1 :(得分:0)

我猜是这样的事情:

select sum(distinct t1.val)/( count(distinct t2.id)+ count(distinct t3.id))
from mytable t1
join mytable t2
on 1=1
join mytable t3
on 1=1
where not t2.val = 0 and (t3.val is null) 

SQLFIDDLE