在我的 sql 过程中,我创建了一个临时表,然后对其进行旋转。这是动态的,所以最后我不知道有多少列。让我们制作这张表:
equipmentID | Name1 | Name2 | Name3
1 | 34.54 | 21.23 | 213.65
2 | 334 | 23.421 | 23.12
3 | 43.4 | 2.34 | 23.41
用于生成它的查询存储在一个字符串中,并通过调用execute(@stringQuery)
.
我的另一个表是使用普通 sql 查询获取的,并生成另一组信息(包括equipmentID
数据透视表中包含的信息)。
我想要做的是加入这两个表(基于equipmentID
这样存储过程返回一个表而不是两个但我不知道如何做到这一点。
到目前为止,我已经尝试了几件事:
保留主要(第二个)查询并将执行行添加到该
FROM
部分的末尾,以便在所有表连接后我有:LEFT JOIN execute(@stringQuery) as strQ on strQ.equipmentID = mainQ.equipmentID
将第二个查询设为字符串,以便使用
execute
命令获取它们或创建另一个包含主 sql 的存储过程,因此(再次)它们都使用该execute
命令。这确实获取了它只是没有结合它的信息。在这种情况下,我尝试将这两个执行与:execute('select * from (' + @query1 + ') as tbl2 left join ' + @query2 + ' as tbl1 on tbl2.equipmentID= tbl1.equipmentID')
将主查询转换为字符串,然后使用 a 将它们组合起来
LEFT JOIN
,使其成为一个大查询。
所有这些都给我带来了问题。我认为这是一件很常见的事情,除了我已经尝试过的方法之外,我不确定如何解决它。
编辑 当我尝试创建一个临时表并插入(或从中选择)时,我被告知临时表名称是无效对象。