У меня есть следующий код для выполнения Pivot и Unpivot для набора столбцов:
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX),
@colsUnpivot AS NVARCHAR(MAX)
select @colsUnpivot = stuff((select ','+quotename(C.name)
from tempdb.sys.columns as C
where C.object_id = object_id('tempdb..#TmpTable')
for xml path('')), 1, 1, '')
SET @cols = STUFF((SELECT ',' + QUOTENAME(a.Date)
FROM
(Select top 10000 date from
#TmpTable
order by date) a
group by a.Date
order by a.Date
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT name, ' + @cols + ' from
(
select Date,name,value
from #TmpTable
unpivot
(
value for name in ('+@colsUnpivot+')
) unpiv
) x
pivot
(
sum(value)
for date in (' + @cols + ')
) p '
exec(@query)
Но я продолжаю получать эти ошибки, которые я не могу понять, почему:
Тип столбца «Дата» конфликтует с типом других столбцов, указанных в списке UNPIVOT.
Неверное имя столбца 'Дата'
Тип столбца Date
во временной таблице: datetime
.