[英]store the result of the a dynamic pivot to a temp table
I need to store the result of the following dynamic pivot to a temp table. 我需要将以下动态数据透视表的结果存储到临时表中。 Any suggesiotns?
有什么建议吗?
DECLARE @serviceid int = 66;
DECLARE @SQL nvarchar(max);
WITH E(n) AS( SELECT n FROM (VALUES(0),(0),(0),(0),(0),(0),(0),(0),(0),(0))E(n) ),
cteTally(n) AS( SELECT TOP(SELECT /*TOP 1*/ COUNT(*) cnt
FROM #T WHERE serviceid = @serviceid--Comment this and uncomment the other part to use the full table. /*GROUP BY serviceid
ORDER BY cnt DESC*/) ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) n
FROM E a, E b )
SELECT @SQL = N'WITH CTE AS(' + CHAR(10) + CHAR(9) + N'SELECT *,
ROW_NUMBER() OVER( PARTITION BY serviceid ORDER BY serviceid) AS row_num' + CHAR(10) + CHAR(9) + N'FROM #T'
+ CHAR(10) + CHAR(9) + N'WHERE serviceid = @serviceid' + CHAR(10) + N')' + CHAR(10) + CHAR(9)
+ N'SELECT serviceid' + CHAR(10) + CHAR(9) + N',ProgramId' + CHAR(10)
+ (SELECT CHAR(9) + ',MAX( CASE WHEN row_num = ' + CAST( n AS nvarchar(3))
+ ' THEN Firstbilleddate END) AS Firstbilleddate' + CAST( n AS nvarchar(3))
+ CHAR(10) FROM cteTally FOR XML PATH(''), TYPE).value('./text()[1]', 'nvarchar(max)')
+ (SELECT CHAR(9) + ',MAX( CASE WHEN row_num = ' + CAST( n AS nvarchar(3)) + ' THEN CoveragePlanName END) AS CoveragePlanName'
+ CAST( n AS nvarchar(3)) + CHAR(10) FROM cteTally
FOR XML PATH(''), TYPE).value('./text()[1]', 'nvarchar(max)')
+ CHAR(9) + N',SUM( ChargeAmount) AS ChargeAmount' + CHAR(10) + CHAR(9) + N',SUM( AdjustmentAmount) AS AdjustmentAmount'
+ CHAR(10) + CHAR(9) + N',SUM( PaymentAmount) AS PaymentAmount' + CHAR(10) + N'FROM CTE' + CHAR(10) + N'GROUP BY serviceid'
+ CHAR(10) + CHAR(9) + N',ProgramId;' + CHAR(10); PRINT @SQL; EXECUTE sp_executesql @SQL, N'@serviceid int', @serviceid;
I think the only way is to use an OPENROWSET and execute your dynamic sql query there. 我认为唯一的方法是使用OPENROWSET并在其中执行动态SQL查询。 You would need to pass your dynamic SQL (including variables) as a string.
您将需要将动态SQL(包括变量)作为字符串传递。
Have a look at Insert results of a stored procedure into a temporary table 看一下将存储过程的结果插入临时表中
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.