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

わんくま同盟

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

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


(過去ログ 164 を表示中)
■94563 / )  Re[5]: SQLサーバーの計算式ででNULLが表示される
□投稿者/ たかし (49回)-(2020/04/21(Tue) 15:33:21)
No94552 (魔界の仮面弁士 さん) に返信
> ■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

魔界の仮面弁士様、いつもありがとうございます。
おっしゃるとおり「CASE」は不要でした。

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

で何も問題ありませんでした。

返信 編集キー/


管理者用

- Child Tree -