Тип столбца «Дата» конфликтует с типом других столбцов, указанных в списке UNPIVOT. - PullRequest
0 голосов
/ 09 июня 2019

У меня есть следующий код для выполнения 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.

1 Ответ

0 голосов
/ 09 июня 2019

Этот пост был очень полезен, чтобы объяснить проблему. По сути, мне пришлось преобразовать значения в десятичные для всех столбцов во внутреннем операторе select раздела unpivot:

Ошибка: тип столбца «DOB» конфликтует с типом других столбцов, указанных в списке UNPIVOT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...