我有两张桌子:
A
包含ID
和Query
列。 B
包含ID
,Value
和Category
列。在表A
的每一行中(没有任何异常),列Query
包含一个SQL查询nvarchar,类似于SELECT * FROM B WHERE Category = 1
。
我无法弄清楚,如何执行表A
的所有查询并合并这些结果并返回它们(在select语句中)。
我已经尝试遍历表A
中的所有行,将EXEC(Query)
的结果插入临时表#C
,最后执行SELECT * FROM #C
。但是我没有成功解决这个问题。
编辑
只是为了澄清:查询结果集的列及其数据类型 - 存储在表A
中 - 是相同的。表B
只有一个数据类型为[timestamp]
的列。我收到的例外是:
无法将显式值插入时间戳列。将INSERT与列列表一起使用以排除时间戳列,或将DEFAULT插入时间戳列
答案 0 :(得分:0)
我认为如果我理解这个问题,这应该可以让你得到你想要的东西。
DECLARE @sqlStatement NVARCHAR(MAX) = '';
SELECT @sqlStatement += CONCAT(Query,' UNION ALL ')
FROM TableA
;
SET @sqlStatement = LEFT(@sqlStatement, LEN(@sqlStatement) - 10 );
EXEC sp_executesql @sqlStatement;