La cláusula SQL WITH fue introducida por Oracle en la base de datos Oracle 9i release 2. La cláusula SQL WITH le permite asignar un nombre a un bloque de subconsulta (un proceso también llamado refactorización de subconsulta), que se puede referenciar en varios lugares dentro de la consulta SQL principal. El nombre asignado a la subconsulta se trata como si fuera una vista o tabla en línea. La cláusula SQL WITH es básicamente un reemplazo directo a la subconsulta normal.
sintaxis para el SQL con la cláusula
La siguiente es la sintaxis del SQL con la cláusula cuando se utiliza un solo alias sub-consulta.
WITH <alias_name> AS (sql_subquery_statement)
SELECT column_list FROM <alias_name>[,table_name]
[WHERE <join_condition>]
Al usar múltiples alias de sub-consulta, la sintaxis es la siguiente.
WITH <alias_name_A> AS (sql_subquery_statement),
<alias_name_B> AS(sql_subquery_statement_from_alias_name_A
or sql_subquery_statement)
SELECT <column_list>
FROM <alias_name_A>, <alias_name_B> [,table_names]
[WHERE <join_condition>]
En la documentación sintaxis anterior, las ocurrencias de alias_name
es un nombre significativo que le daría a la sub-consulta después de la cláusula AS. Cada sub consulta debe separarse con una coma Example for WITH statement. El resto de las consultas siguen los formatos estándar para consultas SQL SELECT simples y complejas.
Para más información: http://www.brighthub.com/internet/web-development/articles/91893.aspx
http://msdn.microsoft.com/en-us/library/ms175972(v=sql.105).aspx – Vikdor
¿Estás usando MYSQL? b/c no es compatible. –
Puse un ejemplo de cómo usar la cláusula WITH para crear una tabla estática temporal. Puede encontrar esto útil, ya que contiene algunos ejemplos sobre cómo usar cláusulas WITH en sus consultas. http://www.giombetti.com/2014/02/14/using-sql-with-clause-to-create-temporary-static-tables-at-query-time/ –