書くことに違いはありますか:
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% 同じですか (論理的にトラップ... )?
書くことに違いはありますか:
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% 同じですか (論理的にトラップ... )?
私のテスト データでは、同じ結果が返され、ほぼ同じ実行計画が返されます。
すべて同じコストで、2 つの操作が逆になっただけです。
論理的には違いはないと思います。ただし、この場合、集約関数は 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