1

書くことに違いはありますか:

select
...,
mySum= CASE 
           WHEN i  IS NULL THEN 0 ELSE  SUM(i) 
       END  
...

select
...,
mySum=  SUM( CASE WHEN i IS NULL THEN 0  ELSE i
             END
           ) 
...

それとも 100% 同じですか (論理的にトラップ... )?

4

2 に答える 2

3

私のテスト データでは、同じ結果が返され、ほぼ同じ実行計画が返されます。

ここに画像の説明を入力

すべて同じコストで、2 つの操作が逆になっただけです。

于 2013-01-23T12:38:18.890 に答える
1

論理的には違いはないと思います。ただし、この場合、集約関数は null を無視するため、null をチェックする必要はないと思います

ところで、次のようcaseに aで簡略化できisnullます。(編集:誤って追加sum(isnull(i,0))され、変更されましたIsnull(sum(i),0))

select Col1, Isnull(sum(i),0) as mySum
from yourTable
group by Col1
于 2013-01-23T12:46:56.213 に答える