列<column_name>的类型与UNPIVOT列表中指定的其他列的类型冲突

时间:2018-05-22 06:17:50

标签: sql sql-server tsql

DECLARE @cols AS NVARCHAR(MAX),
@query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT TOP 7 CAST(',' + QUOTENAME(c.name) AS NVARCHAR(50)) 
                from tempdb.sys.columns c where object_id =
                object_id('tempdb..#MyTempTable')
                AND c.name NOT IN ('description')
        FOR XML PATH(''), TYPE
        ).value('.', 'NVARCHAR(MAX)') 
    ,1,1,'')

SET @query = 'SELECT * FROM #MyTempTable              
          UNPIVOT (
            Qty FOR Customer_Name IN (' + @cols + ')
          ) unpvt 
          WHERE [description] NOT IN (''Grand Total'') ORDER BY [Customer_Name] ASC'

exec sp_executesql @query;

以上是我的代码,我不知道哪个部分会导致错误,但如果我只选择前6级及以下,那就没问题。

我的临时表

IF OBJECT_ID('tempdb..#MyTempTable') IS NOT NULL
DROP TABLE #MyTempTable
SELECT * INTO #MyTempTable FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
'Excel 12.0;Database=E:\Book2.xlsx', 'SELECT * FROM [March$A2:ZZ]')

成功: imagehere

错误: image here

0 个答案:

没有答案