Est-il possible de choisir parmi le résultat d'une union? Par exemple, j'essaie de faire quelque chose comme:
SELECT A
FROM
(
SELECT A, B FROM TableA
UNION
SELECT A, B FROM TableB
)
WHERE B > 'some value'
Suis-je en train de manquer quelque chose ou de faire une hypothèse sur la façon dont cela fonctionne? J'utilise MSSQL 2005, donc toute solution devra être conforme à ce que je peux y faire.
Vous devez donner alias à votre table. Essayez donc ceci:
SELECT A
FROM
(
SELECT A, B FROM TableA
UNION
SELECT A, B FROM TableB
) AS tbl
WHERE B > 'some value'
Donnez un nom d'alias sans lequel vous recevrez
Msg 156, Level 15, State 1, Line 21
Incorrect syntax near the keyword 'WHERE'.
Essayez ceci (Donnez un nom d'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
Résultat
A
1
1
1
1
2
2
2
2