2012-09-13 14 views
18

¿Es posible seleccionar del resultado de una unión? Por ejemplo, estoy tratando de hacer algo como:Seleccionar de la unión tsql

SELECT A 
FROM 
(
    SELECT A, B FROM TableA 
    UNION 
    SELECT A, B FROM TableB 
) 
WHERE B > 'some value' 

¿Me falta algo o hacer una suposición acerca de cómo funciona esto? Estoy usando MSSQL 2005, por lo que cualquier solución tendrá que ajustarse a lo que puedo hacer allí.

+0

Sí es posible. ¿Hay algún problema? – hims056

+0

Recibo el error 'Sintaxis incorrecta cerca de la palabra clave' DONDE '.' y no puedo ejecutar la consulta. – BlargleMonster

+1

Falta el nombre del alias ... compruebe las respuestas proporcionadas –

Respuesta

35

Debe dar alias a su mesa. Así que trate de esto:

SELECT A 
FROM 
(
    SELECT A, B FROM TableA 
    UNION 
    SELECT A, B FROM TableB 
) AS tbl 
WHERE B > 'some value' 
3

dar el nombre de alias sin que recibirá

Msg 156, Level 15, State 1, Line 21 
Incorrect syntax near the keyword 'WHERE'. 

probar este (Dar nombre de alias)

DECLARE @TableA Table(A int, B int) 
DECLARE @TableB Table(A int, B int) 

INSERT INTO @TableA VALUES(1,1) 
INSERT INTO @TableA VALUES(1,2) 
INSERT INTO @TableA VALUES(1,3) 
INSERT INTO @TableA VALUES(1,4) 

INSERT INTO @TableB VALUES(2,1) 
INSERT INTO @TableB VALUES(2,2) 
INSERT INTO @TableB VALUES(2,3) 
INSERT INTO @TableB VALUES(2,4) 

SELECT A 
FROM 
(
    SELECT A, B FROM @TableA 
    UNION 
    SELECT A, B FROM @TableB 
)X -- here X is table Alias 
WHERE B > 0 

Resultado

Un

1 
1 
1 
1 
2 
2 
2 
2 
Cuestiones relacionadas