SQL Server、項目 Null
いつもお世話になっております。
SQL Serverを使っております。
項目のNull値許可は、ほぼ全てNoにしております。
データベースデフォルト値は0や' 'にしております。
Magicの普通の作りをしている分には
項目のNull値許可は、YesでもNoでも大差は無いですかね?
UPDATE 請求残高データ
SET 振込入金額 =
( SELECT SUM( 入金額 ) FROM 入金伝票 WHERE 得意先・・・ AND 入金日がいつ~いつ迄 )
FROM 請求残高データ
などとした時、指定した期間に入金データが無い場合、SELECTの結果がNULLとなり、更新に失敗します。
試していませんがこれは請求残高データの振込入金額がNull不可にしてあるからだと思います。
請求残高データの振込入金額がNull許可であれば、上記でもいけると思います。
そこで今回の場合、
UPDATE 請求残高データ
SET 振込入金額 =
CASE WHEN
( SELECT SUM( 入金額 ) FROM 入金伝票 WHERE 得意先・・・ AND 入金日がいつ~いつ迄 )
IS NULL
THEN
0
ELSE
( SELECT SUM( 入金額 ) FROM 入金伝票 WHERE 得意先・・・ AND 入金日がいつ~いつ迄 )
END
FROM 請求残高データ
のようにして回避しました。
項目のNullを許可するかしないかはどちらにも一長一短あるという事でよろしいでしょうか?
-
ISHIJIMAさん レスありがとうございます。
Null値許可の設定は私と同じですね。データパッチなどでもSQL文を多用し、大変重宝しております。
UPDATE、DELETE、INSERTなど。また件数数えたり、金額集計を把握したり、こんな集計が欲しいんだけど
とお客様から相談があった時など、SELECT SUM GROUP BYなどを使い
素早くサンプルデータを提供し大活躍しております。得意先別なんとか別集計など、
プログラム側でもSQL文を使う事で大変な効率化を実現出来るので
大量利用しております。 -
今回の最初の投稿は1個こっきりのデータパッチの為、SQL文でUPDATEを行いました。
-
「0」を発見したのがインド人で、「Null」の概念を生み出したのがアントニー・ホーアという人らしいのですが、Wikipediaで調べると、この人はスリランカ生まれのイギリス人らしいです。
世の中にはいろんな人がいますね。
サインインしてコメントを残してください。
コメント
3件のコメント