与Unpivot有一些问题但不确定原因。我知道列类型需要相同,我想我已将其排序。
表
CREATE TABLE [dbo].[zztmp1](
[Project_Number] [varchar](50) NULL,
[Changed_Design_Status] [varchar](50) NULL,
[Changed_Cost] [decimal](38, 4) NULL,
[Change_Date] [varchar](8) NULL
) ON [PRIMARY]
脚本
select
Project_Number,
ColumnName, Value, Change_Date
from
(
select Project_Number,
Changed_Design_Status ,
cast(Changed_Cost as varchar(50)) Changed_Cost,
cast(Change_Date as varchar(50)) Change_Date
from zztmp1
) d
unpivot
(
Value FOR
ColumnName in ( Changed_Design_Status-- ,Changed_Cost
)
) unpiv;
在我添加Change_Cost时出现错误:
Msg 8167,Level 16,State 1,Line 15 列的类型" Changed_Cost"与UNPIVOT列表中指定的其他列的类型冲突。
如果我更改订单并使用change_Cost运行它可以正常工作。当我有多个列时,这似乎是一个问题,我在做什么。
任何建议表示赞赏。
谢谢
答案 0 :(得分:0)
我发现使用cross apply
select z.Project_Number, v.ColumnName, v.Value, z.Change_Date
from zztmp1 z outer apply
(values ('Changed_Cost', cast(Changed_Cost as varchar(50)) ),
('Changed_Design_Status', cast(Changed_Design_Status as varchar(50)) )
) v(ColumnName, Value);
在您的情况下,它可能与Changed_Design_Status
的类型有关。