MS Access Tips/Sample and VBA and Blog customize etc...

集計クエリで Null と 0 のみの時は集計結果は Null

数値フィールドに 0 や Null、それ以外の数値が含まれてる可能性があります。そのとき、集計クエリで集計する場合、
Null と 0 のみの場合は、集計結果は Null
0 のみの場合は、集計結果は 0
0 と Null 以外の数値を含む場合は、その数値の合計
という集計結果になるようにしたい。

AccessClubの掲示板での質問です。どれほど需要があるのかよく分かりませんが、覚えておけば、何かのときにつかえるテクニックかも知れません。

難易度:

仕様

テーブル名 Tbl1

フィールド名 CD, Fld1(数値型)

データ例

CD Fld1
1   
1  0 
1  0 
2  0 
2  0 
2  0 
3   
3  0 
3  1 
3  3 

集計結果

CD Fld1
1   
2  0 
3  4 

※空欄はNull値。

クエリ作成

テーブル Tbl1 よりクエリを作成して、集計クエリにして、下記のように設定します。

フィールド:  CD  F1計: IIf(Min([F1] Is Null)=-1 And Max([F1])=0,Null,Sum([F1]))  
集計: グループ化  演算 

SQLでは、

上記は F1 にマイナスが存在しないという前提ですが、マイナスのデータがある場合は、下記のようにAbs関数で絶対値にします。
IIf(Min([F1] Is Null)=-1 And Max(Abs([F1]))=0,Null,Sum([F1]))

ポイントはIIfの条件式ですね。
Min([F1] Is Null)=-1
でNull値が存在するかどうか判定します。[F1] Is Null は、Null値なら True(-1)、数値が入っていれば False(0)になりますので、Null値が存在すれば最小は -1 になります。
また、Max([F1])=0(最大が 0)ということは、0 か Null しか存在しないことになります。AND でつなげれば、Null が存在して、かつ、Null以外はすべて0、ということになります。


拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/254-c93fb40e
該当の記事は見つかりませんでした。