Select 基于另一个特定行的特定列 Table

Select Specific Columns Based on Specific Row in Another Table

我有两个 table。一个 table 包含有关在另一个 table.

中查找信息的位置的信息

Table答:

PK ManagerKey Table ColumnOne ColumnTwo
51 101 DataBase1.dbo.Table1 TestingColumn1 TestingColumn5
29 201 DataBase1.dbo.Table6 StagingColumn3 StagingColumn4
37 301 DataBase1.dbo.Table3 ProductionColumn4 ProductionColumn9

DataBase1.dbo.Table1(三个 table 中的每一个都具有相同的结构,但我只会使用 DataBase1.dbo.Table本例中为 1):

PK TestingColumn1 TestingColumn2 TestingColumn3 TestingColumn4 TestingColumn5
565 6 0 StringOne StringTwo StringThree
876 0 0 StringOne StringTwo StringThree
151 5 0 StringOne StringTwo StringThree

如果我将 Table A 的结果缩小到单行,如何使用 Table A 的 ColumnOne 和 ColumnTwo 中的行结果到 return 所需的列第二个table? Table A 的 Table 列中列出的数据库将始终相同 (DataBase1)。但是,table 名称不同,如示例所示。

预期结果:

PK TestingColumn1 TestingColumn5
565 6 StringThree
876 0 StringThree
151 5 StringThree

感谢任何帮助。谢谢。

您需要动态构建 SQL 才能执行 - 老实说,我本以为在实施此设计之前就已经确定了如何做到这一点!

没有必要对动态 SQL 有这种笨拙的要求,这可以全部包含在一个配置中 table。

类似于:

declare @sql nvarchar(max);

select @sql = Concat('select ', QuoteName(columnone), ', ', QuoteName(columntwo), ' from ', [table])
from A
where pk=51;

exec (@sql);

我建议避免将列命名为“Table”,因为它是保留字并且内容不是 table 而是完全限定的对象名称。