2012-09-13 11 views
18

ユニオンの結果から選択できますか?たとえば、私は次のようなことをしようとしています:ユニオンtsqlから選択

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

これはどういう仕組みですか?私はMSSQL 2005を使用していますので、すべてのソリューションが私がそこで何ができるかを遵守する必要があります。

+0

はい可能です。何か問題ある? – hims056

+0

キーワード 'WHERE'の近くに 'Incorrect syntax'というエラーが表示されます。クエリを実行できません。 – BlargleMonster

+1

エイリアス名がありません。提供された回答を確認してください。 –

答えて

35

エイリアスをテーブルに追加する必要があります。だから、これを試してみてください。

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

はエイリアス名を付け、あなたが

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 
関連する問題