2012-09-13 12 views
18

से चुनें क्या संघ के नतीजे से चयन करना संभव है? उदाहरण के लिए मैं कुछ ऐसा करने की कोशिश कर रहा हूं:यूनियन tsql

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

क्या मुझे कुछ याद आ रहा है या यह कैसे काम करता है इस बारे में कोई धारणा है? मैं एमएसएसएलएल 2005 का उपयोग कर रहा हूं इसलिए किसी भी समाधान को मैं जो कर सकता हूं उसके अनुरूप होना चाहिए।

+0

हाँ यह संभव है। कोई दिक़्क़त है क्या? – hims056

+0

मुझे त्रुटि 'कीवर्ड' के पास गलत वाक्यविन्यास 'WHERE' प्राप्त होता है। और क्वेरी चलाने में असमर्थ हूं। – 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 

परिणाम दे

1 
1 
1 
1 
2 
2 
2 
2