組合の結果から選択することは可能ですか?たとえば、私は次のようなことをしようとしています:
SELECT A
FROM
(
SELECT A, B FROM TableA
UNION
SELECT A, B FROM TableB
)
WHERE B > 'some value'
私は何かが欠けているか、これがどのように機能するかについて仮定していますか?私はMSSQL 2005を使用しているため、すべてのソリューションはそこでできることに従う必要があります。
テーブルにaliasを指定する必要があります。だからこれを試してください:
SELECT A
FROM
(
SELECT A, B FROM TableA
UNION
SELECT A, B FROM TableB
) AS tbl
WHERE B > 'some value'
あなたが受け取ることなくエイリアス名を与えます
Msg 156, Level 15, State 1, Line 21
Incorrect syntax near the keyword 'WHERE'.
これを試してください(エイリアス名を指定)
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
結果
[〜#〜] a [〜#〜]
1
1
1
1
2
2
2
2