2012-11-23 76 views
0

我有一個存儲過程,它根據參數計算幾個值的平均值。在計算平均值時處理NULL值

這裏的代碼片段:

WHILE @@FETCH_STATUS = 0 
BEGIN    
    SELECT 
     @valFound = AVG(FilterSurface) 
    FROM 
     [tblVAR_FilterSurface] 
    WHERE 
     refDate >= DATEADD(DAY, -30, @refDate) 
     AND refDate <= DATEADD(DAY, 0, @refDate) 
     AND patientId = @patientId 

    INSERT INTO __TEMP(PatientId, RefDate, ModifyDate, FilterSurface) 
    VALUES(@patientId, @refDate, @modifyDate, @valFound); 

    SET @valFound = NULL 

    FETCH NEXT FROM db_cursor INTO @patientId, @refDate, @modifyDate 
END 

有時因爲系統嘗試計算NULL值的平均值和結果分配給@valFound可變此存儲過程失敗。我認爲問題是將結果分配給這些變量。

如何修改我的存儲過程以正確處理空值?

回答

2

要麼改變選擇到@valFound = AVG(ISNULL(FilterSurface,0))或改變where子句包括和FilterSurface不爲空,這取決於如果你想算零點零或排除他們