sql-server - 在连接中引用另一个表中的表名列 - SQL Server
问题描述
我有以下情况:
表 1
col1 col2 col3
1 40 100(tblABC 的标识列值)
2 41 101(tblDEF 的标识列值)
表 2
col1 col2 col3
40 tblABC tblABCPrimaryKey
41 tblDEF tblDEFPrimaryKey
========= 不同的表 ===============
tblABC
tblPrimaryKeyId col2
100 VALUE
tblDEF
tblPrimaryKeyId col2
101 值
我需要
从 Table-1
INNER JOIN中
选择 Table-1.col1、
Table-2.col2、
[ tblABC.col2 OR tblDEF.col2 等等,具体取决于表]
我想
从表 1 中获取 col1,
从表 2 中获取 col2,其中表 1 的 col2 与表 2 的 col1 匹配,
从(表 2 的 COL2 中的表中的表,其中表 2 中的 col3 与这些表中的列匹配) col-2 [不同的表])
请帮忙。
解决方案
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;
推荐阅读
- node.js - Sequelize 不返回 queryAsync 对象
- angularjs - 如何避免两个相同的 $http.get 请求
- android - 如何从 Tensorflow Java API 访问 tflite 模型?
- java - 使用了扫描仪方法,但键盘输入未显示在命令窗口中
- c++ - 如何将用户输入传递给 char[]
- c# - 仅 4 位正则表达式模式/组匹配日期和斜线
- python - 如何从每个子组的pandas DataFrame中统一采样n行
- php - 根据 WP 编码标准清洁和消毒 php 代码
- javascript - Asp .Net Core 缓存选择 ajax 请求
- docker - 如何在 CoreOS 虚拟机上运行 Cassandra?