|
■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)
で何も問題ありませんでした。
|