2016-05-31 64 views
0

加入2個集Exec的字符串我有2個選擇語句中的字符串設置這樣的:在TSQL

set @sql = 'Select.......' -- (Returns col1, col2, col3) 
exec (@sql) 

set @sql = 'Select.......' -- (Returns col4, col5, col6) 
exec (@sql) 

我想加入這2條EXEC語句,這樣的列會出現這樣的結果:

col1 | col2 | col3 | col4 | col5 | col6 

任何提示?謝謝。

+1

這是一個聯合,而不是一個聯盟。 –

+0

你想做什麼?你爲什麼不簡單地寫一個正確的連接?爲什麼要使用'EXEC'? –

+0

不確定。我們的DBA在3年前編寫了這個存儲過程,並且將其縮減爲我的需要,以便我可以將它用作我正在編寫的程序的後端。基本上所有這些EXEC都有過濾器,它們在其他表格中設置了選項,可以從我們的程序中獲得價值。 – RockGuitarist1

回答

1

數據訪問打開本地服務器上:

exec sp_serveroption @server = 'YourServerName' 
    ,@optname = 'DATA ACCESS' 
    ,@optvalue = 'TRUE' 

並使用OPENQUERY:

select 
    * 
from ( 
     select * from openquery(YourServerName, 'select 1 as a') 
     ) t1 
    full join (
     select * from openquery(YourServerName, 'select 3 as b') 
) t2 
    on t1.a = t2.b 
+0

我不斷返回一個錯誤,指出我的t1語句太長。 (超過8000個字符,這是真實的) – RockGuitarist1

0
DECLARE @SQL1 VARCHAR(MAX) 
DECLARE @SQL2 VARCHAR(MAX) 

SET @SQL1='SELECT COL1,COL2,NULL AS COL3,NULL AS COL4 FROM #TEST1' 
SET @SQL2='SELECT NULL,NULL, COL3, COL4 FROM #TEST2' 

EXEC (@SQL1 +' UNION ALL '+ @SQL2) 
+1

不用擔心字符串連接是一個非常糟糕的主意,OP實際上是詢問JOIN,而不是UNION。 –

0

我得到了我想要通過刪除EXEC並保持它們作爲普通結果選擇語句。然後我執行了一個Inner Join來避免NULLS。感謝所有的幫助。