“Date”与UNPIVOT列表SQL Server中指定的其他列的类型冲突

时间:2014-07-01 01:42:49

标签: sql-server tsql sql-server-2005 pivot unpivot

我正在做这样的事情:

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

 ) un

我收到错误:

"日期"与UNPIVOT列表中指定的其他列的类型冲突。

注意:我的登台表的日期列的类型为datetime。

如何重新发送此错误?帮助。

1 个答案:

答案 0 :(得分:4)

通常,您会在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;