【问题标题】:Insert into Temp Table from SQL Dynamic Results从 SQL 动态结果插入临时表
【发布时间】: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' 附近的语法不正确。”

标签: sql sql-server tsql


【解决方案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 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-22
    • 1970-01-01
    • 2017-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多