カテゴリ:

クエリ構文

FROM

SELECT ステートメントで使用するテーブル、ビュー、またはテーブル関数を指定します。

こちらもご参照ください:

AT | BEFORECHANGESCONNECT BYJOINPIVOTSAMPLE / TABLESAMPLEUNPIVOT

構文

SELECT ...
FROM objectReference [ JOIN objectReference [ ... ] ]
[ ... ]

条件:

objectReference ::=
   {
      [<namespace>.]<object_name>
           [ AT | BEFORE ( <object_state> ) ]
           [ CHANGES ( <change_tracking_type> ) ]
           [ PIVOT | UNPIVOT ]
           [ [ AS ] <alias_name> ]
           [ SAMPLE ]
     | <table_function>
           [ PIVOT | UNPIVOT ]
           [ [ AS ] <alias_name> ]
           [ SAMPLE ]
     | ( VALUES (...) )
           [ SAMPLE ]
     | [ LATERAL ] ( <subquery> )
           [ [ AS ] <alias_name> ]
     | @[<namespace>.]<stage_name>[/<path>]
           [ ( FILE_FORMAT => <format_name>, PATTERN => '<regex_pattern>' ) ]
           [ [AS] <alias_name> ]
   }
JOIN

2つ以上のテーブル(またはビューまたはテーブル関数)間の結合を実行することを指定する副次句。結合には、内部結合、外部結合、または他のタイプの結合があります。結合では、キーワード JOIN またはサポートされている別の結合構文を使用できます。 JOINsの詳細については、 JOIN をご参照ください。

[ AS ] エイリアス名

接続先のオブジェクト参照に付けられた名前を指定します。 FROM 句の他の副次句のいずれかで使用できます。

エイリアス名は オブジェクト識別子 のルールに従う必要があります。

VALUES

VALUES 句は、 FROM 句で使用されるリテラル値または式を指定できます。この句には、テーブルおよび列のエイリアスを含めることができます(上の図には示されていません)。VALUES 句の詳細については、 VALUES をご参照ください。

オブジェクトまたはテーブル関数句

[名前空間.]オブジェクト名

クエリされるオブジェクト(テーブルまたはビュー)の名前を指定します。

オブジェクト名は 名前空間 を使用して修飾できます( データベース名.スキーマ名.オブジェクト名 または スキーマ名.オブジェクト名 の形式)。セッションの現在のデータベースとスキーマからコンテキストを導出できる場合、名前空間は必要ありません。

クエリするテーブル/ビュー名を指定する場合、次のオプションの副次句も指定できます。

AT | BEFORE ( オブジェクト状態 )

Time Travelのテーブルまたはビューの時間ベースまたはイベントベースの履歴状態を指定するオプションの副次句。詳細については、 AT | BEFORE をご参照ください。

テーブル関数

FROM 句内で呼び出すシステム定義または UDF テーブル関数を指定します。詳細については、 テーブル関数 または UDFs (ユーザー定義関数) をご参照ください。

PIVOT | UNPIVOT

FROM 句の結果のピボットまたはピボット解除を指定するオプションの副次句。詳細については、 PIVOT および UNPIVOT をご参照ください。

SAMPLE

テーブル/ビューから行をサンプリングすることを指定するオプションの副次句。詳細については、 SAMPLE / TABLESAMPLE をご参照ください。

インラインビュー句

[ LATERAL ] ( サブクエリ )

FROM 句内のインラインビューを指定します。オプションの LATERAL キーワードを使用すると、 サブクエリ は、現在の FROM 句にあり、インラインビューの左側にある、他のテーブル(またはビューまたはテーブル関数)の列を参照できます。

一般的なサブクエリの詳細については、 サブクエリの操作 をご参照ください。

ステージングされたファイル句

@[名前空間.]ステージ名[/パス]

クエリする名前付きステージを指定します(または、現在のユーザーのステージを参照するための ~ 、または指定したテーブルのステージを参照するためのテーブル名が後に続く %)。

ステージをクエリするときに、オプションで名前付きファイル形式とパターンを指定することもできます。

( FILE_FORMAT => フォーマット名 [ , PATTERN => '正規表現パターン' ] )

ステージに使用する名前付きファイル形式オブジェクトと、ステージ内のファイルのセットをフィルター処理するパターンを指定します。

クエリステージの詳細については、 ステージングされたファイルのデータのクエリ をご参照ください。

階層クエリ結果

階層クエリ結果

階層クエリの結果は、 CONNECT BY などの句を使用して階層データのテーブルをクエリした結果セットです。詳細については、 CONNECT BY をご参照ください。

使用上の注意

  • オブジェクト名は SQL 識別子です。デフォルトでは、大文字と小文字は区別されません。大文字と小文字を保持するには、二重引用符(" ")で囲みます。

テーブルを作成し、そこにデータをロードします。

CREATE TABLE ftable1 (retail_price FLOAT, wholesale_cost FLOAT, description VARCHAR);
INSERT INTO ftable1 (retail_price, wholesale_cost, description) 
  VALUES (14.00, 6.00, 'bling');

FROM句を使用する基本的な例を次に示します。

SELECT description, retail_price, wholesale_cost 
    FROM ftable1;
+-------------+--------------+----------------+
| DESCRIPTION | RETAIL_PRICE | WHOLESALE_COST |
|-------------+--------------+----------------|
| bling       |           14 |              6 |
+-------------+--------------+----------------+

この例は前の例と同じですが、テーブルのスキーマで修飾されたテーブル名を指定します。

SELECT description, retail_price, wholesale_cost 
    FROM temporary_doc_test.ftable1;
+-------------+--------------+----------------+
| DESCRIPTION | RETAIL_PRICE | WHOLESALE_COST |
|-------------+--------------+----------------|
| bling       |           14 |              6 |
+-------------+--------------+----------------+

この例では、インラインビューを作成し、クエリで使用します。

SELECT v.profit 
    FROM (SELECT retail_price - wholesale_cost AS profit FROM ftable1) AS v;
+--------+
| PROFIT |
|--------|
|      8 |
+--------+

この例では、テーブル内のデータの10%のサンプルをクエリします。

SELECT *
    FROM sales SAMPLE(10);

この例では、 UDTF (ユーザー定義の表関数)を実行します。

SELECT *
    FROM TABLE(Fibonacci_Sequence_UDTF(6.0::FLOAT));

これらの例では、 AT 句を使用して、過去に指定された以下のポイントから履歴データを返します。

  • 現在時刻(-86400 = -3600 * 24)より1日早い。

  • 特定の日時。

SELECT *
    FROM sales AT(OFFSET => -86400);
SELECT *
    FROM sales AT(TIMESTAMP => '2018-07-27 12:00:00'::TIMESTAMP);

AT の詳細については、 AT | BEFORE をご参照ください。

この例では、名前付きステージにあるファイルをクエリしています。

SELECT
    v.$1, v.$2, ...
  FROM
    @my_stage( FILE_FORMAT => 'csv_format', PATTERN => '.*my_pattern.*') v;