动态SQL存储过程第2个结果集

时间:2013-12-12 18:05:37

标签: sql stored-procedures dynamic reporting-services nested

我正在处理通过SSRS显示来自两个表的选定测试结果的请求。我已经开发了动态SQL来实现这一点但在运行存储过程时遇到困难,因为我只收到第一个结果集。

此存储过程首先查询标记名称表,该表用于为第二个查询构建列...这将检索实际所需的数据。 SP返回列名但不返回所需的第二个结果集。

我意识到这是一个丑陋的解决方案,但是我们的IT小组没有对原始数据库设计的投入,所以现在我们正在尽力帮助。

代码:

DECLARE @cols as NVARCHAR(MAX), @query1 as NVARCHAR(MAX), @query2 as NVARCHAR(MAX),
@FLOATTABLE NVARCHAR(MAX), @TAGTABLE NVARCHAR(MAX),@startdate as NVARCHAR(MAX), 
@ENDDATE AS NVARCHAR(MAX), @results as NVARCHAR(MAX)

set @FLOATTABLE = 'dbo.TRW_TESTER_FLOATTABLE' --for testing purposes only
set @tagtable = 'dbo.TRW_TESTER_TAGTABLE' --for testing purposes only

Set @startdate='2013-12-05' -- for testing purposes only
Set @enddate='2013-12-31' -- for tesying purposes only

set @query2 = 'SELECT STUFF((SELECT  DISTINCT   '','' +
QUOTENAME(CONVERT(VARCHAR,TagName),' 
+ '''"'') FROM ' + @TAGTABLE + ' FOR XML PATH ('''')),1,1,'''')'

EXECUTE sp_executeSQL @query2, @Cols OUTPUT


Set @query1 = 'SELECT  DISTINCT DateAndTime, Millitm,  ' + @cols + ' FROM ( select
T.DateAndTime, T.Millitm, N.TagName, T.Val from ' + @FLOATTABLE + ' T  LEFT JOIN ' + 
@TAGTABLE + ' N ON T.TagIndex=N.TagIndex WHERE T.DateAndTime Between '''+ @startdate +
''' AND '''+ @enddate +''')  x PIVOT (MAX(Val) for TagName IN (' + @cols + ')) p'

EXECUTE sp_executeSQL @query1, @results OUTPUT

0 个答案:

没有答案