【发布时间】:2012-04-12 18:20:50
【问题描述】:
在我的 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') 将主查询转换为字符串,然后使用
LEFT JOIN将它们组合起来,使其成为一个大查询。
所有这些都给我带来了问题。我认为这是一件常见的事情,除了我已经尝试过的方法之外,我不确定如何解决它。
编辑 当我尝试创建临时表并插入(或从中选择)时,我被告知临时表名称是无效对象。
【问题讨论】:
标签: sql-server-2008