varios unir una tablas tabla relacionadas misma ejemplos datos consultas consultar consulta sql sql-server sql-server-2008 tsql common-table-expression

una - unir dos tablas sql server



¿Cómo puedo tener múltiples expresiones de tabla comunes en una sola instrucción SELECT? (2)

Estoy en el proceso de simplificar una declaración de selección complicada, así que pensé que usaría expresiones de tabla comunes.

Declarar un solo cte funciona bien.

WITH cte1 AS ( SELECT * from cdr.Location ) select * from cte1

¿Es posible declarar y usar más de una cte en el mismo SELECT?

es decir, este sql da un error

WITH cte1 as ( SELECT * from cdr.Location ) WITH cte2 as ( SELECT * from cdr.Location ) select * from cte1 union select * from cte2

el error es

Msg 156, Level 15, State 1, Line 7 Incorrect syntax near the keyword ''WITH''. Msg 319, Level 15, State 1, Line 7 Incorrect syntax near the keyword ''with''. If this statement is a common table expression, an xmlnamespaces clause or a change tracking context clause, the previous statement must be terminated with a semicolon.

NÓTESE BIEN. He intentado poner punto y coma y obtener este error

Msg 102, Level 15, State 1, Line 5 Incorrect syntax near '';''. Msg 102, Level 15, State 1, Line 9 Incorrect syntax near '';''.

Probablemente no sea relevante, pero esto está en SQL 2008.


Creo que debería ser algo así como:

WITH cte1 as (SELECT * from cdr.Location), cte2 as (SELECT * from cdr.Location) select * from cte1 union select * from cte2

Básicamente, WITH es solo una cláusula aquí, y al igual que las otras cláusulas que toman listas, "," es el delimitador apropiado.


La respuesta arriba mencionada es correcta:

WITH cte1 as (SELECT * from cdr.Location), cte2 as (SELECT * from cdr.Location) select * from cte1 union select * from cte2

Adicionalmente, también puede consultar desde cte1 en cte2:

WITH cte1 as (SELECT * from cdr.Location), cte2 as (SELECT * from cte1 where val1 = val2) select * from cte1 union select * from cte2

val1,val2 son solo asunciones para las expresiones ..

Espero que este blog también ayude: http://iamfixed.blogspot.de/2017/11/common-table-expression-in-sql-with.html