HAVING

この項目の指定はオプションです。この項目では、どの要約レコードを転送するかを指定します。

HAVINGWHERE の違いに注意してください。WHERE が、あるグループ内の 1 つ 1 つのレコードに対して働くのに対し、HAVING は要約レコード (各グループに関する要約情報が入っているレコード) に対してだけ働きます。

この項目を使用して、要約レコードを転送するためにその要約レコードが満たさなければ ならない 1 つまたは複数の条件を指定することができます。

条件には、要約レコードに対して行うテストを指定します。指定した条件は、すべての要約レコードに対してテストされ、そのテストにパスした 要約レコードだけが転送されます。すべての要約レコードを転送する場合には、この HAVING 項目はブランクのままにしてください。

条件の形式は次のとおりです。
function (field-name)  test  value
これは次のことを表しています。
function
これは SELECT に使用できる関数のうちの 1 つです。これらの関数の詳細については、このセクションの SELECT の説明を参照してください。
field-name
これは「転送元」に指定したレコード形式によって定義されたフィールドです。指定するフィールド名は、SELECT に指定されていなくても構いません。
テスト
これは、関数に対して使用する次のような比較のタイプです。
=
等しい
<> または ><
等しくない
>
より大
>=
以上
<
より小
<=
以下
これは、あるフィールドに働く関数か、または定数です。定数、式、および テストの詳細については、WHEREを参照してください。
注: コンマは小数点のように扱われるため、数字の中にコンマを使用しないでください。
テスト条件は、論理 AND または論理 OR を用いて組み合わせる ことができます。AND と OR の両方を指定した場合、AND 比較が 最初に行われます。比較は最高 50 まで指定できます。また、括弧を使用して 演算順序を変更したり、演算に説明を加えたりすることができます。例えば、次のように指定したとします。
COUNT(*) >=2 AND MAX(PRICE) > 100

この場合、グループに 2 つ以上のレコードを持ち、かつ PRICE の最大値が 100 より大きい要約レコードだけが転送されます。

必要なフィールドの名前がわからない場合は、参照を選択すれば、該当のレコードに入っているすべてのフィールド名のリストが表示されます。

各関数に戻される値のタイプ、長さ、桁数、および小数部分の桁数は、次のとおりです。
            Type     Length    Digit       Decimal Places
SUM         Packed     16       31    (Same as tested field)
AVG         Packed     16       31     31 (Total of the digit
                                           and decimal places
                                           of the field)
COUNT       Binary      4       10         0
MAX              (Same as tested field)
MIN              (Same as tested field)