having-clause

HAVING 節は、 search-condition (検索条件) が真である R のグループで構成される中間結果表を指定します。

R は、副選択のそれ以前の節の結果です。 その節が GROUP BY ではない場合、 R はグループ化列のない単一のグループと見なされます。
Read syntax diagramSkip visual syntax diagramHAVINGsearch-condition
検索条件内の各列名 は、以下の条件のいずれかを満たすものであることが必要です。
  • R のグループ化列を明確に識別すること。
  • 集約関数内で指定されていること。
  • 相関参照であること。 副選択外の表参照 の列を識別している列名 は、相関参照となります。

検索条件が適用される R のグループは、 検索条件内の各集約関数 (引数が相関参照である関数を除く) の引数を提供するものとなります。

検索条件に副照会が入っている場合、その副照会は、 検索条件が R のグループに適用されるたびに実行され、 その結果は検索条件の適用において使用されるものと見なすことができます。 実際には、副照会が各グループごとに実行されるのは、 その中に相関参照が入っている場合だけです。 違いについては、「 副選択照会の例」の 例 6 および 例 7 を参照してください。

R のグループに対する相関参照は、グループ化列を指定するものであるか、 あるいは集約関数に入っているものでなければなりません。

HAVING が GROUP BY なしで使用される場合、選択リストに含められるものは、列名 (それが集約関数の引数となっている場合)、相関列参照、グローバル変数、ホスト変数、リテラル、特殊レジスター、SQL 変数、または SQL パラメーターに限られます。

注: 以下の式は、集約関数に含まれている場合にのみ HAVING 節に指定できます (SQLSTATE 42803)。
  • table-designator の行変更タイム・スタンプ
  • table-designator の ROW CHANGE TOKEN
  • RID_BIT または RID スカラー関数