从 SQL 动态结果插入临时表
Posted
技术标签:
【中文标题】从 SQL 动态结果插入临时表【英文标题】:Insert into Temp Table from SQL Dynamic Results 【发布时间】:2018-09-24 19:51:38 【问题描述】:我正在尝试将 sql 动态的结果插入到临时表中,但出现语法错误。我已经研究过,但我无法弄清楚我在这里做错了什么
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column
SELECT @ColumnName = ISNULL(@ColumnName + ',','') + QUOTENAME([month])
FROM (SELECT DISTINCT [Month] FROM MyTable) AS [Month]
order by [month]
--Prepare the PIVOT query using the dynamic
SET @DynamicPivotQuery =
N'SELECT Mem_Name, ' + @ColumnName + '
FROM MyTable into MyTest
PIVOT(SUM(Amount)
FOR Month IN (' + @ColumnName + ')) AS PVTTable'
--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery
【问题讨论】:
您有足够的代表知道当您遇到错误时应该分享错误消息。并提供一些细节,以便其他人可以提供帮助。 Here 是一个很好的起点。 你的诱惑在哪里?您没有在此脚本中插入任何内容。你的错误是什么?这会很有帮助 哪个语句有语法错误,错误“near”是什么字符? 我已经更新了我的代码以显示我试图插入 MyTest 表的位置 这是我在帖子中提到的语法错误,它准确地说是“'myTest' 附近的语法不正确。” 【参考方案1】:我所要做的就是添加这个: ' 到 ##myTempTable
DECLARE @DynamicPivotQuery AS NVARCHAR(MAX)
DECLARE @ColumnName AS NVARCHAR(MAX)
--Get distinct values of the PIVOT Column
SELECT @ColumnName = ISNULL(@ColumnName + ',','') + QUOTENAME([month])
FROM (SELECT DISTINCT [Month] FROM MyTable) AS [Month]
order by [month]
--Prepare the PIVOT query using the dynamic
SET @DynamicPivotQuery =
N'SELECT Mem_Name, ' + @ColumnName + ' into ##myTempTable
FROM MyTable
PIVOT(SUM(Amount)
FOR Month IN (' + @ColumnName + ')) AS PVTTable'
--Execute the Dynamic Pivot Query
EXEC sp_executesql @DynamicPivotQuery
【讨论】:
以上是关于从 SQL 动态结果插入临时表的主要内容,如果未能解决你的问题,请参考以下文章