0

我有一个存储过程,它根据参数计算几个值的平均值。

这是代码片段:

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变量时,此存储过程会失败。我认为问题在于将结果分配给这些变量。

如何修改我的存储过程以正确处理空值?

4

1 回答 1

2

将选择更改为 @valFound = avg(isnull(FilterSurface, 0)) 或将 where 子句更改为包含且 FilterSurface 不为空,具体取决于您是否要将空值计为零或排除它们

于 2012-11-23T17:38:50.323 回答