SnowConvert AI - ANSI SQL - Subconsultas¶
Descrição¶
Uma subconsulta é uma consulta dentro de outra consulta. Subconsultas em uma cláusula FROM ou WHERE são usadas para fornecer dados que serão usados para limitar ou comparar/avaliar os dados retornados pela consulta que os contém. (Documentação das subconsultas do Snowflake).
As subconsultas podem ser correlacionadas/não correlacionadas, bem como escalares/não escalares.
Subconsultas correlacionadas referenciam colunas da consulta externa. No Snowflake, as subconsultas correlacionadas são executadas para cada linha da consulta. Por outro lado, subconsultas não correlacionadas não fazem referência à consulta externa e são executadas uma vez para toda a consulta.
Scalar subqueries return a single value as result, otherwise the subquery is non-scalar.
Os padrões a seguir são baseados nessas categorias.
Amostra de padrões da origem¶
Dados de configuração¶
Teradata¶
Snowflake¶
Subconsultas não escalares¶
Subconsultas não escalares especificadas dentro de operadores de subconsulta (ANY/ALL/IN/EXISTS) são compatíveis.
Subconsultas não escalares usadas como tabelas derivadas também são aceitas.
Teradata¶
Resultado¶
Snowflake¶
Resultados¶
Problemas conhecidos¶
1. Subconsultas com FETCH primeiro que não são escalares não correlacionadas
A Oracle permite utilizar a cláusula FETCH em subconsultas. O Snowflake só permite o uso desta cláusula se a subconsulta for escalar não correlacionada, caso contrário, uma exceção será gerada.
O SnowConvert AI marcará qualquer uso inválido de FETCH em subconsultas com SSC-EWI-0108
Oracle:
Snowflake: