WITH修飾子の構文 - Advanced SQL Engine - Teradata Database

Teradata Vantage™ - SQLデータ操作言語

Product
Advanced SQL Engine
Teradata Database
Release Number
17.10
Published
2021年7月
Language
日本語
Last Update
2021-09-23
dita:mapPath
ja-JP/vjt1596846980081.ditamap
dita:ditavalPath
ja-JP/wrg1590696035526.ditaval
dita:id
B035-1146
Product Category
Software
Teradata Vantage
WITH modifier [,...]

構文要素

modifier
{ query_name [ column_list ] AS ( select_expression ) |
  RECURSIVE recursive_query_name [ column_list ] AS ( seed seed_spec [...] )
}
query_name
問合わせの名前。
column_list
( column_name [,...] )
select_expression
名前付きクエリーで格納する行データを取り出す非再帰的SELECT文。
変換グループにfromsqlルーチンがある場合だけ、UDTを返す式を列リストに指定できます。システムは、結果をクライアント アプリケーションに返す前に、fromsqlルーチンを使用して自動的に式をそのUDT値から外部タイプに変換します。
SELECTリクエストの選択リストで、行レベルのセキュリティ制約列を指定できます。ただし、選択リストの算術式の一部として列を指定することはできません。列に返される値は、行からの行レベル セキュリティ制約のコード化された値です。
recursive_query_name
再帰的問合わせの名前。
seed
{ SELECT | SEL } [ DISTINCT | ALL ] { * | expr_spec [,...] }
  FROM { single_table_spec | joined_table_spec | derived_table_spec }
  WHERE search_condition
  [ GROUP BY group_by_spec [,...] ]
  [ { HAVING | QUALIFY } search_condition ]
  [ ORDER BY order_by_spec [,...] ]
シード文は、名前付き問合わせで格納するための行データを他のテーブルから取り出す非再帰的SELECT文です。
seed_spec
UNION ALL { seed | recursive_statement }
UNION ALLは、反復操作の結果を名前付きクエリーに追加します。
column_name
指定された問合わせ定義中の列の名前。
expr_spec
{ expression [ [AS] expression_alias_name ] |
  table_name.*
}
single_table_spec
table_name [ [AS] correlation_name ]
joined_table_spec
joined_table {

  [ INNER | { LEFT | RIGHT | FULL } [ OUTER ] ]
    JOIN joined_table ON search_condition |

  CROSS JOIN
}
derived_table_spec
(subquery) [AS] derived_table_name
  [ ( derived_table_column_name [,...] ) ]
search_condition
シード文によって返される行が満たしていなければならない条件付き検索式。
検索条件に行レベル セキュリティ制約の値を指定すると、この値はエンコード形式で表現しなければなりません。
group_by_spec
{ ordinary_grouping_set |
  empty_grouping_set |
  rollup_list |
  cube_list |
  grouping_sets_specification
}
order_by_spec
{ expression | column_name | column_name_alias | column_position }
  [ ASC | DESC ]
recursive_statement
{ SELECT | SEL } { * | expr_spec [,...] }
  FROM { implicit_join [,...] | explicit_join }
  WHERE search_condition
名前付きクエリーとその他のテーブルの結合から行データを取得するSELECT文。NORMALIZE関数、集約関数、または順序付けられた分析関数を含めることはできません。
expr_spec
{ expression [ [AS] expression_alias_name ] |
  table_name.*
}
implicit_join
{ query_name | table_name } [ [AS] correlation_name ]
explicit_join
{ { query_name | join_table_name } LEFT [OUTER] JOIN joined_table |
  join_table_name RIGHT [OUTER] JOIN { query_name | joined_table } |
  query_name INNER JOIN joined_table |
  join_table_name INNER JOIN query_name
} ON search_condition
DISTINCT
指定された式リストからの結果の重複するセットから、1行だけが返されます。
2行が重複するとみなされるのは、一方の行の各値が他方の行の対応する値と同じ場合だけです。
ALL
式リストの結果に、重複行を含むすべての行が返されます。これは、デフォルト値です。
*
シード文のFROM句で参照されるすべてのテーブルのすべての列が返されます。
table_nameによって修飾された場合、table_nameのみのすべての列が返されます。
search_condition
結果の行が満たす必要がある1つまたは複数の条件式。
検索条件に行レベル セキュリティ制約の値を指定すると、この値はエンコード形式で表現しなければなりません。
QUALIFYとHAVINGとの相違点は、QUALIFYフィルタがデータ上にある多種類の順序付き分析関数の実行結果に基づいていることです。
expression
スカラーUDFを含む、任意の有効なSQL式。
expression_alias_name
式の別名。
table_name
単一テーブル、派生テーブル、テーブルUDF、またはビューの名前。
correlation_name
table_nameの別名。
joined_table
結合テーブルの名前。
INNER
一方のテーブルの修飾行が、結合条件に従って、別のテーブルの修飾行と結合される結合。
内部結合はデフォルト値の結合タイプです。
LEFT [ OUTER ]
FROM句に最初にリストされたテーブルとの外部結合。
LEFT OUTER JOINでは、左側のテーブル内の、2つのテーブルの内部結合の結果に返されない行が、nullで拡張されて外部結合の結果に返されます。
RIGHT [ OUTER ]
FROM句に2番目にリストされたテーブルとの外部結合。
RIGHT OUTER JOINでは、右側のテーブル内の、2つのテーブルの内部結合の結果に返されない行が、nullで拡張されて外部結合の結果に返されます。
FULL [ OUTER ]
行は両方のテーブルから返されます。
完全外部結合では、両方のテーブルの中の内部結合の結果に返されなかった行が、nullで拡張されて外部結合の結果に返されます。
joined_table
search_condition
結果の行が満たす必要がある1つまたは複数の条件式。
FROM句に外部結合を指定する場合には、ON条件句は必須です。
検索条件の行レベル セキュリティ制約に指定する値は、エンコード形式にする必要があります。
CROSS JOIN
制約のない結合または直積の結合。CROSS JOINは、FROM句に指定されたすべてのテーブルのすべての行を返します。
完全外部結合では、両方のテーブルの中の内部結合の結果に返されなかった行が、nullで拡張されて外部結合の結果に返されます。
subquery
入れ子のSELECT文を指定します。
サブクエリーの中にSELECT AND CONSUME文を使用することはできません。
サブクエリーでNORMALIZEを指定できます。
derived_table_name
派生テーブルの名前。
derived_table_column_name
列名。このフィールドでは列名のみを指定します。「テーブル名.列名」や「データベース名.テーブル名.列名」のような形式は指定しないでください。
UDT型の列は有効ですが、例外があります。
ordinary_grouping_set
シード文によって返される行をグループ分けする列式。
式は、LOB、ARRAYまたはVARRAYのタイプがある結果行をグループ化できません。
ordinary_grouping_setは、次の3つの一般カテゴリに分けられます。
  • column_name
  • column_position
  • column_expression
empty_grouping_set
引数を持たない、隣接するLEFT PARENTHESIS、RIGHT PARENTHESISのペア。この構文は、計算されたグループ合計の総計をリクエストするために使用します。
rollup_list
結果行を単一の次元の1つ以上の詳細レベルで報告するROLLUP式。
式は、LOB、ARRAYまたはVARRAYのタイプがある結果行をグループ化できません。
cube_list
結果行を複数の次元の1つ以上の詳細レベルで報告するCUBE式。
式は、LOB、ARRAYまたはVARRAYのタイプがある結果行をグループ化できません。
grouping_sets_specification
結果行を次のいずれかの方法で報告するGROUPING SETS式。
  • 単一の次元(完全なROLLUPを指定しない)
  • 複数の次元(完全なCUBEを指定しない)
expression
シード文のSELECT式リスト内の式を、名前、または式リスト内の式の数値の位置を指定する定数によって参照します。
column_name
SELECT文のORDER BY句で使用される列(複数可)の名前。これらの列を、昇順または降順にすることができます。
column_name_alias
問合わせのSELECT式リストに指定されている列名の別名。この列で、結果の行がソートされます。
column_name_aliasをソート値として指定する場合、その列が選択リストで指定されているかどうかにかかわらず、その列の別名を問合わせのFROM句で参照されているテーブルに定義されている列の名前と同じ名前にすることはできません。システムは常に、ユーザーが指定する列の別名よりも、基礎となる物理的な列の名前を優先して参照します。
問合わせの選択リスト内で、ソート列をcolumn_position値で指定できます。
column_position
ORDER BY句で指定される列の位置数値。昇順または降順にできます。
ASC
結果が昇順でソートされます。
ソート フィールドが文字列の場合、システムは現在のセッションの照合順序の定義に従って、昇順で整列します。
デフォルトの順序はASCです。
DESC
結果が降順でソートされます。
ソート フィールドが文字列の場合、システムは現在のセッションの照合順序の定義に従って、降順でソートします。