我一整天都在尝试将单行的简单查询结果合并到另一行的另一个动态查询中。简要说明我得到的内容如下:
我有一个查询作为复杂SELECT的结果,返回一行两列:
HistoryDate |TotalMarketValue
2014-08-31 1195687865.20
然后我有另一个动态查询返回一个动态列数的行,其中我不知道将返回的名称或列数,我执行这样的事情:
exec sp_executesql @query
基本上我需要做的是:
SELECT HistoryDate, SUM(TotalMarketValue) FROM MyComplexTable, exec sp_executesql @query
显然上面的语法是错误的,因为exec部分不允许我做CROSS JOIN。我尝试过各种其他方法,比如尝试将动态查询结果填充到临时表中,但是再次它不允许我创建表而不指定列数。我错过了这一点。
有人可以告诉我如何将动态查询作为合并查询的一部分吗?
答案 0 :(得分:0)
您可以使用表变量并将查询结果插入其中。然后从表变量和带有union的select语句中选择数据。
DECLARE @query NVARCHAR(MAX)
SET @query = 'SELECT HistoryDate, SUM(TotalMarketValue)'
DECLARE @Results TABLE(cola DATETIME, colb DECIMAL(18,2))
INSERT INTO @Results
exec sp_executesql @query
SELECT * FROM @Results
UNION
SELECT HistoryDate, SUM(TotalMarketValue)