SnowConvert AI – ANSI SQL – Unterabfragen¶
Beschreibung¶
Eine Unterabfrage ist eine Abfrage in einer anderen Abfrage. Unterabfragen in einer FROM- oder WHERE-Klausel werden verwendet, um Daten bereitzustellen, die zum Begrenzen oder Vergleichen/Auswerten der von der enthaltenden Abfrage zurückgegebenen Daten verwendet werden. (Dokumentation zu Snowflake-Unterabfragen).
Unterabfragen können sowohl korreliert/unkorreliert als auch skalar/nicht skalar sein.
Korrelierte Unterabfragen verweisen auf Spalten aus der äußeren Abfrage. In Snowflake werden korrelierte Unterabfragen für jede Zeile in der Abfrage ausgeführt. Unkorrelierte Unterabfragen verweisen hingegen nicht auf die äußere Abfrage und werden einmal für die gesamte Abfrage ausgeführt.
Skalare Unterabfragen geben einen einzelnen Wert als Ergebnis zurück, andernfalls ist die Unterabfrage nicht skalar.
Die folgenden Muster basieren auf diesen Kategorien.
Beispielhafte Quellcode-Muster¶
Datenkonfiguration¶
Teradata¶
Snowflake¶
Nicht skalare Unterabfragen¶
Nicht skalare Unterabfragen, die innerhalb von Unterabfrageoperatoren (ANY/ALL/IN/EXISTS) angegeben sind, werden unterstützt.
Nicht skalare Unterabfragen, die als abgeleitete Tabellen verwendet werden, werden ebenfalls unterstützt.
Teradata¶
Ergebnis¶
Snowflake¶
Ergebnisse¶
Bekannte Probleme¶
1. Unterabfragen mit FETCH zuerst, die nicht unkorrelierte skalare Unterabfragen sind
Oracle erlaubt die Verwendung der FETCH -Klausel in Unterabfragen, Snowflake erlaubt die Verwendung dieser Klausel nur, wenn die Unterabfrage nicht korreliert skalar ist; andernfalls wird eine Ausnahme generiert.
SnowConvert AI markiert jede unzulässige Verwendung von FETCH in Unterabfragen mit SSC-EWI-0108.
Oracle:
Snowflake: