Join mit Spalten-Variable

Lukas2016

Benutzer
Beiträge
7
Hallo zusammen,

ich versuche zwei Tabellen per inner join zu verbinden. Die Verbindungsspalten (strings) sollen jedoch variabel sein, also abhängig von einem Wert (0 oder 1) in der Quelltabelle.

Hier ein Beispiel:

Code:
Declare @Result_1 as nvarchar(10)
Declare @Result_2 as nvarchar(10)
Declare @Check int

Set  @Check= (Select distinct CheckCol
from [dbo].[tbl1] )

Set @Result_1= Case when @Check=1 then 'a.[ID]'  else 'a.[ID_2]' end
Set @Result_2= Case when @Check=1 then 'b.[Code]' else 'b.[Code_2]' end

SELECT *
  FROM [dbo].[tbl1] a inner join [dbo].[tbl2] b ON @Result_1=@Result_2



Wenn ich die Abfrage ausführe, werden keine Datensätze ausgegeben.

Was mache ich falsch? Oder ist das einfach nicht möglich?

Viele Grüße
 
Zuletzt bearbeitet:
Werbung:
aus meiner Sicht (gut, ich kenne M$SQL nicht) kann das eher nicht gehen, du kannst dynamisch den Query-String bauen und via EXECUTE ausführen. So in dieser Form kannst Du IMHO keine Variablen verwenden.
 
Korrekt Tabellen-/Spaltennamen oder Teile des Codes können nicht aus Variablen stammen, das geht nur mit dynamischen SQL via EXEC(). In diesem Fall ließe sich das recht überschaubar lösen:
Code:
Declare @Result_1 as nvarchar(10)
Declare @Result_2 as nvarchar(10)
Declare @Check int

Set  @Check= (Select distinct CheckCol
from [dbo].[tbl1] )

Set @Result_1= Case when @Check=1 then 'a.[ID]'  else 'a.[ID_2]' end
Set @Result_2= Case when @Check=1 then 'b.[Code]' else 'b.[Code_2]' end

EXEC('SELECT * FROM [dbo].[tbl1] a INNER JOIN [dbo].[tbl2] b ON ' + @Result_1 + '=' + @Result_2)
 
Werbung:
Zurück
Oben