连接中另一个表中的引用表名称列-SQL Server

时间:2018-07-31 21:25:24

标签: sql-server join dynamic

我有以下情况:

表1
col1 col2 col3
1 40 40(tblABC的标识列值)
2 41 41(tblDEF的标识列值)

表2
col1 col2 col3
40 tblABC tblABCPrimaryKey
41 tblDEF tblDEFPrimaryKey

==========不同的表==============
tblABC
tblPrimaryKeyIdcol2
100 VALUE

tblDEF
tblPrimaryKeyIdcol2
101 VALUE

我需要在join的下面获取列
选择Table-1.col1,
表格2.col2,
[tblABC.col2或tblDEF.col2等,依表而定]
从表1
内部联接(联接在这里)

我想得到
表1中的col1,
表2中的col2,其中表1的col2与表2的col1匹配,
col2来自(表2的COL2中的表,其中表2的col3与col-2 [不同表]中的那些表中的列匹配)

请帮助。

1 个答案:

答案 0 :(得分:0)

DECLARE @sql NVARCHAR(MAX) = '
SELECT Table1.col1
    , Table2.col2,
    , COALESCE(';

SELECT
    @sql = @sql + #Table2.col2 + '.col2, '
FROM #Table2;

SET @sql = @sql + ' NULL)
INNER JOIN Table2
    ON Table1.col2 = Table2.col1';

SELECT
    @sql = @sql + '
LEFT JOIN ' + col2 + ' 
    ON Table2.col2 = ''' + col2 + ''' 
    AND Table1.col3 = ' + col2 + '.col1'
FROM #Table2

EXEC sys.sp_executesql @sql;