2/19/2021

Access。クエリで期間外のデータ数を算出したい場合には、どうしたいいの?【Not Between And】

Access。クエリで期間外のデータ数を算出したい場合には、どうしたいいの?

<Access:Not Between And>

クエリで、4月1日~4月10日のデータというように、抽出するためには、Between Andという比較演算子をつかうことで、抽出することができます。

抽出ができれば、データ件数を算出することは、容易ですね。


最初に、T参加者得点テーブルをつかって、抽出を確認しておきましょう。


得点が、50点から70点のデータを抽出するクエリをつくることにします。


作成タブのクエリデザインをクリックします。


全てのフィールドをつかってクエリをつくります。

 

得点が、50点から70点のデータを抽出したいので、得点フィールドの抽出条件の行に「Between 50 And 70」と設定します。


あとは、実行して確認してみましょう。


このように、50点から70点の間のデータを抽出することができました。


Accessのクエリでは、「Between~And」をつかうことで期間の抽出をすることができます。


ここからが、本題。その逆。期間外の抽出をして、データの件数を算出するにはどうすればいいのでしょうか?


今回の得点のように、0~100と最低点と最高点の範囲が決まっている場合ならば、0~49と71~100というように、二つの条件をOR条件で設定すれば、抽出することができます。


次のように、「抽出条件」と「または」に設定します。


では、実行して確認しておきましょう。


抽出することはできました。


しかし、最低値や最高値が決まっていない場合や、小数点の場合など、OR条件では、対応するのが難しくなってしまいますし、同じような設定を2行設定するもの、面倒です。


そもそも単純に、「期間外」を抽出する方法を知っていれば、いいわけです。


その方法が、「Between~ And」にNOTをつけることで、「~でない」という条件にすることができます。


抽出条件を「Not (Between 50 And 70)」と変更してみます。

まずは実行して確認してみましょう。


先程、OR条件で設定したのと同じ結果で、抽出することができました。


このように、Notを使うことで、「~ではない」という条件にすることができますので、知っていると、いいかもしれませんね。


余談ですが、なんでも先頭にNotを付ければいいわけではありません。


「空白ではない」という条件で抽出したい場合は、「Is Not Null」と設定します。

真ん中に、Notが入ることもあります。