C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 164 を表示中)
■94552 / )  Re[4]: SQLサーバーの計算式ででNULLが表示される
□投稿者/ 魔界の仮面弁士 (2694回)-(2020/04/21(Tue) 10:47:12)
No94551 (たかし さん) に返信
> shu さんの方法でうまくいきました。
> CASE WHEN 有給休暇累計日数 = 0.0 THEN IsNull(有給休暇合計日数 , 0) ELSE IsNull(有給休暇合計日数 , 0) + IsNull(有給休暇累計日数 , 0) END

その CASE 式は、本当に必要ですか?

元質問の CASE 式が NULL を返すパターンというのは、
 ・有給休暇累計日数 が NULL のとき
 ・有給休暇合計日数 が NULL のとき
のいずれかのケースのはずです。(最初の質問では、この前提が間違っていたようですが)

そしてこの場合、CASE 式は不要で、shu さんが書かれたように ISNULL 関数だけで事足りるでしょう。

ISNULL(有給休暇合計日数, 0.0) + ISNULL(有給休暇累計日数, 0.0)



ただし、たとえば NULL 値を 0.0 相当として扱いつつも、
累計と合計が両方とも NULL のときだけは NULL を返したいような場合には、
CASE を使う意味もあるかもしれません。

CASE WHEN 有給休暇累計日数 IS NULL AND 有給休暇累計日数 IS NULL THEN NULL
ELSE ISNULL(有給休暇合計日数, 0.0) + ISNULL(有給休暇累計日数, 0.0) END
解決済み
返信 編集キー/


管理者用

- Child Tree -