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変数に割り当てようとすると、このストアドプロシージャが失敗することがあります。問題は、その変数への結果の割り当てだと思います。

null値を正しく処理するために、ストアドプロシージャを変更するにはどうすればよいですか?

4

1 に答える 1

2

nullをゼロとしてカウントするか除外するかに応じて、selectを@valFound = avg(isnull(FilterSurface、0))に変更するか、where句を含めるように変更します。FilterSurfaceはnullではありません。

于 2012-11-23T17:38:50.323 に答える