选择时执行存储在列中的SQL-Query

时间:2017-05-12 11:49:40

标签: sql sql-server tsql

我有两张桌子:

  • 表格A包含IDQuery列。
  • 表格B包含IDValueCategory列。

在表A的每一行中(没有任何异常),列Query包含一个SQL查询nvarchar,类似于SELECT * FROM B WHERE Category = 1

我无法弄清楚,如何执行表A的所有查询并合并这些结果并返回它们(在select语句中)。

我已经尝试遍历表A中的所有行,将EXEC(Query)的结果插入临时表#C,最后执行SELECT * FROM #C。但是我没有成功解决这个问题。

编辑

只是为了澄清:查询结果集的列及其数据类型 - 存储在表A中 - 是相同的。表B只有一个数据类型为[timestamp]的列。我收到的例外是:

  

无法将显式值插入时间戳列。将INSERT与列列表一起使用以排除时间戳列,或将DEFAULT插入时间戳列

1 个答案:

答案 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;