Kategorien:

Abfragesyntax

FROM

Gibt die Tabellen, Ansichten oder Tabellenfunktionen an, die in einer SELECT-Anweisung verwendet werden sollen.

Siehe auch:

AT | BEFORE, CHANGES, CONNECT BY, JOIN, PIVOT, SAMPLE / TABLESAMPLE, UNPIVOT

Syntax

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

Wobei:

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

Unterklausel, mit der angegeben wird, dass eine Verknüpfung zwischen zwei oder mehr Tabellen (oder Ansichten oder Tabellenfunktionen) ausgeführt werden soll. Die Verknüpfung kann eine innere Verknüpfung, eine äußere Verknüpfung oder eine andere Verknüpfungsart sein. Die Verknüpfung kann das Schlüsselwort JOIN oder eine alternative unterstützte Verknüpfungssyntax verwenden. Weitere Informationen zu JOINs finden Sie unter JOIN.

[ AS ] Aliasname

Gibt einen Namen für den Objektverweis an, mit dem sie verknüpft ist. Kann mit allen anderen Unterklauseln in der FROM-Klausel verwendet werden.

Aliasnamen müssen den Regeln für Objektbezeichner folgen.

VALUES

Die VALUES-Klausel kann literale Werte oder Ausdrücke angeben, die in der FROM-Klausel verwendet werden sollen. Diese Klausel kann Tabellen- und Spaltenaliasse enthalten (nicht im obigen Diagramm dargestellt). Weitere Informationen zur VALUES-Klausel finden Sie unter VALUES.

Objekt- oder Tabellenfunktionsklausel

[Namespace.]Objektname

Gibt den Namen des Objekts (Tabelle oder Ansicht) an, das abgefragt werden soll.

Der Objektname kann mit Namespace (in Form von Datenbankname.Schemaname.Objektname oder Schemaname.Objektname) qualifiziert werden. Ein Namespace ist nicht erforderlich, wenn der Kontext aus der aktuellen Datenbank und dem aktuellen Schema der Sitzung abgeleitet werden kann.

Bei Angabe eines abzufragenden Tabellen-/Ansichtsnamens können Sie auch die folgende optionale Unterklausel angeben:

AT | BEFORE ( Objektstatus )

Optionale Unterklausel, die den zeit- oder ereignisbasierten Verlaufsstatus der Tabelle oder Ansicht für Time Travel angibt. Weitere Details dazu finden Sie unter AT | BEFORE.

Tabellenfunktion

Gibt entweder eine systemdefinierte oder eine UDF-Tabellenfunktion an, die in der FROM-Klausel aufgerufen werden soll. Weitere Details dazu finden Sie unter Tabellenfunktionen oder UDFs (Benutzerdefinierte Funktionen).

PIVOT | UNPIVOT

Optionale Unterklausel, die angibt, ob die Ergebnisse der FROM-Klausel pivotiert oder entpivotiert werden sollen. Weitere Details dazu finden Sie unter PIVOT und UNPIVOT.

SAMPLE

Optionale Unterklausel, die angibt, ob Stichproben für Zeilen aus der Tabelle/Ansicht gezogen werden sollen. Weitere Details dazu finden Sie unter SAMPLE / TABLESAMPLE.

Inlineansichtsklausel

[ LATERAL ] ( Unterabfrage )

Gibt eine Inlineansicht innerhalb der FROM-Klausel an. Wenn das optionale Schlüsselwort LATERAL verwendet wird, kann die Unterabfrage auf Spalten aus anderen Tabellen (oder Ansichten oder Tabellenfunktionen) in der aktuellen FROM-Klausel auf der linken Seite der Inlineansicht verweisen.

Weitere allgemeine Informationen zum Clustering finden Sie unter Verwenden von Unterabfragen.

Klausel für Stagingdateien

@[Namespace.]Name_des_Stagingbereichs[/Pfad]

Gibt einen benannten Stagingbereich an, der abgefragt werden soll (oder ~, um auf den Stagingbereich des aktuellen Benutzers zu verweisen, oder %, gefolgt von einem Tabellennamen, um auf den Stagingbereich der angegebenen Tabelle zu verweisen).

Bei Abfrage eines Stagingbereichs können Sie optional auch ein benanntes Dateiformat und ein Muster angeben:

( FILE_FORMAT => Formatname [ , PATTERN => 'Muster_für_regAusdruck' ] )

Gibt ein benanntes Dateiformatobjekt an, das für den Stagingbereich verwendet werden soll, und ein Muster zum Filtern der Menge von Dateien in der Stagingbereich.

Weitere Informationen zum Abfragen von Stagingbereichen finden Sie unter Abfragen von Daten in Stagingdateien.

Hierarchisches Abfrageergebnis

hierarchisches_Abfrageergebnis

Ein hierarchisches Abfrageergebnis ist das Resultset aus der Verwendung einer Klausel wie CONNECT BY zum Abfragen einer Tabelle mit hierarchischen Daten. Weitere Details dazu finden Sie unter CONNECT BY.

Nutzungshinweise

  • Objektnamen sind SQL-Bezeichner. Bei ihnen wird standardmäßig nicht zwischen Groß- und Kleinschreibung unterschieden. Um Groß-/Kleinschreibung zu erhalten, schließen Sie sie in doppelte Anführungszeichen (" ") ein.

Beispiele

Erstellen Sie eine Tabelle, und laden Sie Daten hinein:

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');

Hier ist ein einfaches Beispiel für die Verwendung der FROM-Klausel:

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

Dieses Beispiel ist identisch mit dem vorherigen Beispiel, gibt jedoch den Tabellennamen an, der vom Schema für die Tabelle qualifiziert wird:

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

In diesem Beispiel wird eine Inline-Ansicht erstellt und anschließend in der Abfrage verwendet:

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

In diesem Beispiel wird eine Stichprobe von 10 % der Daten in der Tabelle abgefragt:

SELECT *
    FROM sales SAMPLE(10);

In diesem Beispiel wird eine UDTF (benutzerdefinierte Tabellenfunktion) ausgeführt:

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

In diesen Beispielen wird eine AT-Klausel verwendet, um historische Daten der folgenden angegebenen Zeitpunkte in der Vergangenheit zurückzugeben:

  • Ein Tag früher als die aktuelle Uhrzeit (-86400 = -3600 * 24).

  • Bestimmte Urzeit und bestimmter Tag.

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

Weitere Informationen zu AT finden Sie unter AT | BEFORE.

In diesem Beispiel werden Dateien abgerufen, die sich in einem benannten Stagingbereich befinden:

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