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;
Выше мой код, я не знаю, какая часть вызывает ошибку, но если я выберу только Top 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]')
Для успеха: изображение здесь
Для ошибки: изображение здесь