問合わせ定義で自身を参照できる、RECURSIVE名前付き問合わせです。名前付き問合わせリストは、少なくとも1つの非再帰(またはシード)文と、少なくとも1つの再帰文で構成されます。
- RECURSIVE query_name
- 再帰的問合わせの名前。
- column_name
- 指定された問合わせ定義中の列の名前。
- UNION ALL
- 反復操作の結果を名前付き問合わせに追加するための演算子。
シード文
シード文は、名前付き問合わせで格納するための行データを他のテーブルから取り出す非再帰的SELECT文です。
- DISTINCT
- 指定された式リストからの結果の重複するセットから、1行だけが返されます。
- ALL
- 式リストの結果に、重複行を含むすべての行が返されます。これは、デフォルト値です。
- *
- シード文のFROM句で参照されるすべてのテーブルのすべての列が返されます。
- expression
- スカラーUDFを含む、任意の有効なSQL式。
- AS
- オプションのexpression_alias_nameを指定します。
- expression_alias_name
- 式の別名。
- table_name
- テーブル、派生テーブル、またはビューの名前。
- FROM
- この後にexpressionで参照するテーブル、ビュー、または派生テーブルの名前が続くことを指定します。
単一テーブル
このオプションによって、シード文のFROM句に単一のテーブルを指定できます。
FROM句には、単一テーブルへの一連の参照を含めることができます。その場合、暗黙のうちに内部結合が作成されます。
シード文のFROM句にWITH RECURSIVE問合わせの名前を指定することはできません。
- table_name
- FROM句で参照される単一テーブル、派生テーブル、UDFテーブル、またはビューの名前。
- AS
- オプションのcorrelation_nameを指定します。
- correlation_name
- FROM句で参照されるテーブルの別名。
結合テーブル
シード文のFROM句の結合テーブルオプションを使用すると、前述のようにして複数のテーブルを明示的に結合することを指定できます。
- joined_table
- 結合テーブルの名前。
- INNER
- 一方のテーブルの修飾行が、結合条件に従って、別のテーブルの修飾行と結合される結合。
- LEFT OUTER
- FROM句に最初にリストされたテーブルとの外部結合。
- RIGHT OUTER
- FROM句に2番目にリストされたテーブルとの外部結合。
- FULL OUTER
- 行は両方のテーブルから返されます。
- JOIN
- 後に続く結合の対象となる2番目のテーブルの名前を指定します。
- ON search_condition
- 結果の行が満たす必要がある1つまたは複数の条件式。
- CROSS JOIN
- 制約のない結合または直積の結合。CROSS JOINは、FROM句に指定されたすべてのテーブルのすべての行を返します。
派生テーブル
シード文のFROM句の派生テーブル オプションを使うと、基礎となるテーブル セットから選択されたデータから成るスプールを指定できます。派生テーブルは、ビュー テーブルのように動作します。
- (subquery)
- 入れ子のSELECT文を指定します。
- AS
- オプションのderived_table_nameを指定します。
- derived_table_name
- 派生テーブルの名前。
- column_name
- 列名。このフィールドでは列名のみを指定します。「テーブル名.列名」や「データベース名.テーブル名.列名」のような形式は指定しないでください。
- WHERE
- 後に続くシード文の検索条件を指定します。
- search_condition
- シード文によって返される行が満たしていなければならない条件付き検索式。
- GROUP BY
- 後に続く結果行の分類方法を指定します。
- ordinary_group_set
- シード文によって返される行をグループ分けする列式。
- empty_grouping_set
- 引数を持たない、隣接するLEFT PARENTHESIS、RIGHT PARENTHESISのペア。この構文は、計算されたグループ合計の総計を要求するために使用します。
- rollup_list
- 結果行を単一の次元の1つ以上の詳細レベルで報告するROLLUP式。
- cube_list
- 結果行を複数の次元の1つ以上の詳細レベルで報告するCUBE式。
- grouping_sets_specification
- 結果行を次のいずれかの方法で報告するGROUPING SETS式。
- 単一の次元(完全なROLLUPを指定しない)
- 複数の次元(完全なCUBEを指定しない)
- HAVING
- 後に続くSELECT文内の条件句を指定します。
- search_condition
- 結果の行が満たす必要がある1つまたは複数の条件式。
- QUALIFY
- このキーワードの後に条件句が続くことを指定し、WHERE句から行をフィルタにかけます。QUALIFYとHAVINGとの相違点は、QUALIFYのフィルタリングでは、フィルタがデータ上にある多種類の順序付き分析機能の実行結果に基づいていることです。
- search_condition
- 結果の行が満たす必要がある1つまたは複数の条件式。
- ORDER BY
- 結果行をソートする順序。
- expression
- シード文のSELECT式リスト内の式を、名前、または式リスト内の式の数値の位置を指定する定数によって参照します。
- column_name
- SELECT文のORDER BY句で使用される列(複数可)の名前。これらの列を、昇順または降順にすることができます。
- column_name_alias
- 問合わせのSELECT式リストに指定されている列名の別名。この列で、結果の行がソートされます。
- column_position
- ORDER BY句で指定される列の位置数値。昇順または降順にできます。
- ASC
- 結果が昇順でソートされます。
- DESC
- 結果が降順でソートされます。
再帰文
再帰文は、名前付き問合わせと他のテーブルの結合から行データを取り出すためのSELECT文です。
再帰的問合わせの再帰文にNORMALIZEを含めることはできません。
- *
- 再帰文のFROM句で参照されるすべてのテーブルのすべての列が返されます。
- expression
- 任意の有効なSQL式。ただし、次のものを除きます。
- 集約関数
- 順序付き分析関数
- AS
- オプションのexpression_alias_nameを指定します。
- expression_alias_name
- expressionの別名。
- table_name
- 名前付き問合わせの名前、またはテーブルまたはビューの名前。
- FROM
- このキーワードの後に、expressionの派生元となる名前付き問合わせおよび1つ以上のテーブルまたはビューの名前が続きます。
暗黙結合
再帰文のFROM句のこのオプションは、RECURSIVE問合わせの名前と、1つ以上の単一テーブルの参照とを指定し、その暗黙内部結合を作成する場合に使用します。
- query_name
- FROM句で参照する名前付き問合わせ。
- AS
- オプションのcorrelation_nameを指定します。
- correlation_name
- FROM句で参照される問合わせ名の別名。
- table_name
- FROM句で参照される単一テーブルまたはビューの名前。
- AS
- オプションのcorrelation_nameを指定します。
- correlation_name
- FROM句で参照されるテーブル名の別名。
明示結合
シード文のFROM句の結合テーブルオプションを使用すると、下記のとおり複数のテーブルを明示的に結合することを指定できます。
- query_name
- FROM句で参照する名前付き問合わせ。
- join_table_name
- 結合テーブルの名前。
- INNER JOIN
- 一方のテーブルの修飾行が、結合条件に従って、別のテーブルの修飾行と結合される結合。
- LEFT OUTER
- FROM句に最初にリストされたテーブルとの外部結合。
- RIGHT OUTER
- FROM句に2番目にリストされたテーブルとの外部結合。
- JOIN
- 後に続く結合の対象となる2番目のテーブルの名前を指定します。
- joined_table
- 結合テーブルの名前。
- ON search_condition
- 結果の行が満たす必要がある1つまたは複数の条件式。
WHERE句
- WHERE
- 再帰文で検索条件を指定するキーワード。
- search_condition
- 再帰文によって返される行が満たしていなければならない条件付きの検索式を指定します。