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 而是完全限定的对象名称。
我有两个 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 而是完全限定的对象名称。