«Дата» конфликтует с типом других столбцов, указанных в списке отключенных SQL server

#sql-server #tsql #sql-server-2005 #pivot #unpivot

#sql-сервер #tsql #sql-server-2005 #сводная #отключенный

Вопрос:

Я делаю отключение следующим образом:

 select    
--ID,
 Value
 from dbo.[staging]
 unpivot
 (
    Value
  for col in ([ Code]
  , [Date]
  ,[ Registered Name]
  ,[Entity Name]
  ,[transactions]
  ,[ PID])

 ) un
  

Я получаю сообщение об ошибке:

«Дата» конфликтует с типом других столбцов, указанных в списке НЕДОСТУПНЫХ.

Примечание: В моей промежуточной таблице есть столбец даты с типом datetime.

Как я могу повторно устранить эту ошибку? Справка Pl.

Ответ №1:

Обычно вы включаете в unpivot дополнительные столбцы, такие как идентификатор. Но решение вашей проблемы состоит в том, чтобы использовать подзапрос для приведения столбца к varchar() :

 select --ID, Value
from (select s.*, convert(varchar(255), [date], 121) as datestr
      from dbo.[staging]
     ) t
unpivot (Value for col in ([ Code], datestr, [ Registered Name], [Entity Name], [transactions], [ PID]
                          )
        ) un;
  

Комментарии:

1. Ошибка получения: неправильный синтаксис рядом с ключевым словом ‘from’ и неправильный синтаксис рядом с ‘t’.

2. Изменен приведенный выше запрос. Это должно быть «convert(nvarchar(255),…». Спасибо.