オラクルでSUMとNVLでデータがないときに0を返す

オラクルでSUMとNVLでデータがないときに0を返す

オラクルでSUMとNVLを使用して、データがない場合は0が返ってくるようにします。

以下のような料金テーブルがあるとします。

ID RYOKIN
1 NULL
2 30

RYOKINカラムにNULLがありますが以下のようにSQLを発行しても正しく合計を求めることができます。

SELECT SUM(RYOKIN)
FROM 料金テーブル

なのでSUM(NVL(RYOKIN),0)とする必要はありません。

但し、以下のように条件を付けるとデータは0件になります。

SELECT SUM(RYOKIN)
FROM 料金テーブル
WHERE ID = 3

このSQLの結果はNULLになります。条件に合致するデータがない場合のSUMの結果はNULLになります。

なので、条件に合致しない(データが取得できない)ことを考慮し、NULLの場合0を返すようにするのなら以下のようにNVLでSUMを囲みます。

SELECT NVL(SUM(RYOKIN),0)
FROM 料金テーブル
WHERE ID = 3

これなら結果は0が返ってきます。

コメント

タイトルとURLをコピーしました