2011-06-02 26 views
0

我試圖找到4個回報的平均值a,b,c,d。有時候,一個回報前A = 0,我想省略此唯一發現只有A,B的平均,CSQL有一個回報時的平均回報率= 0

SELECT SUM(CASE WHEN x > 0 THEN COALESCE(a, 0) + COALESCE(b, 0) + COALESCE(c, 0) + COALESCE(d, 0))/4 

請幫助!

回答

1
Select Z.PrimaryKeyCol, Avg(Z.Value) 
From (
     Select PrimaryKeyCol, a As Value 
     Union All Select PrimaryKeyCol, b 
     Union All Select PrimaryKeyCol, c 
     Union All Select PrimaryKeyCol, d 
     ) As Z 
Where Z.Value <> 0 
Group By Z.PrimaryKeyCol 
0
select (a+b+c+d) 
/
(if(a = 0,0,1) + if(b = 0,0,1) + if(c = 0,0,1) + if(d = 0,0,1)) 
from table