2016-05-31 16 views
0

Ich habe 2 select-Anweisungen innerhalb von Strings Setup wie folgt aus:2 Set Exec Strings in TSQL

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

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

Ich möchte diese 2 exec-Anweisungen Join so dass die Spalten wie dies als Ergebnis erscheint:

col1 | col2 | col3 | col4 | col5 | col6 

Irgendwelche Tipps? Vielen Dank.

+1

Das ist ein Join, keine Union. –

+0

Was versuchst du zu tun? Warum schreibst du nicht einfach einen richtigen Join? Warum überhaupt "EXEC" verwenden? –

+0

Nicht sicher. Unser DBA hat diese Stored Procedure vor 3 Jahren geschrieben und ich habe es auf meine Bedürfnisse zugeschnitten, damit ich es als Backend für ein Programm verwenden kann, das ich gerade schreibe. Im Grunde haben alle diese EXEC Filter in ihnen, die Optionen in anderen Tabellen gesetzt sind, die Werte von unseren Programmen erhalten. – RockGuitarist1

Antwort

1

Schalten Sie DATA ACCESS auf dem lokalen Server:

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

Und verwenden Sie 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

Ich gebe immer einen Fehler zurück, der besagt, dass meine t1-Anweisung zu lang ist. (Über 8000 Zeichen, was wahr ist) – 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

Es ist egal, dass String-Verkettung eine sehr schlechte Idee ist, das OP fragt tatsächlich nach einem JOIN, nicht nach einer UNION. –

0

ich das Ergebnis, die ich durch das Entfernen des EXEC und halten sie als Klar wollte Wählen Sie Anweisungen aus. Dann habe ich einen Inner Join ausgeführt, um NULLS zu vermeiden. Danke allen für die Hilfe.