#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),…». Спасибо.