SnowConvert AI - ANSI SQL - Sous-requêtes¶
Description¶
Une sous-requête est une requête dans une autre requête. Sous-requêtes dans une clause FROM ou [WHERE(https://docs.snowflake.com/en/sql-reference/constructs/where) est utilisée pour fournir des données qui seront utilisées pour limiter ou comparer/évaluer les données renvoyées par la requête les contenant. (Documentation des sous-requêtes Snowflake).
Les sous-requêtes peuvent être corrélées/non corrélées ainsi que scalaires/non scalaires.
Les sous-requêtes corrélées font référence aux colonnes de la requête externe. Dans Snowflake, des sous-requêtes corrélées s’exécutent pour chaque ligne de la requête. En revanche, les sous-requêtes non corrélées ne font pas référence à la requête externe et sont exécutées une fois pour la requête entière.
Les sous-requêtes scalaires renvoient une seule valeur comme résultat, sinon la sous-requête est non scalaire.
Les modèles suivants sont basés sur ces catégories.
Modèles d’échantillons de sources¶
Données de configuration¶
Teradata¶
Snowflake¶
Sous-requêtes non scalaires¶
Les sous-requêtes non scalaires spécifiées dans des opérateurs de sous-requête (ANY/ALL/IN/EXISTS) sont pris en charge.
Les sous-requêtes non scalaires utilisées comme tables dérivées sont également prises en charge.
Teradata¶
Résultat¶
Snowflake¶
Résultats¶
Problèmes connus¶
1. Sous-requêtes avec FETCH d’abord qui ne sont pas des sous-requêtes scalaires non corrélées
Oracle permet d’utiliser la clause FETCH dans les sous-requêtes, Snowflake n’autorise l’utilisation de cette clause que si la sous-requête n’est pas scalaire non corrélée, sinon une exception sera générée.
SnowConvert AI marquera toute utilisation non valide de FETCH dans les sous-requêtes avec SSC-EWI-0108
Oracle :
Snowflake :