我正在尝试UNPIVOT
在不同数据库中的表上运行存储过程中的语句。我可以在UNPIVOT
本地运行良好,但是当我在不同的数据库/服务器上运行它时,会出现以下错误。
The type of column "XXX" conflicts with the type of other columns specified in the UNPIVOT list.
这是我的精简版UNPIVOT
。
CREATE TABLE temp (
id nvarchar(100),
F1 nvarchar(100),
F2 nvarchar(100),
F3 decimal(5,0)
)
INSERT INTO temp VALUES(N'100', N'111', N'AAA', 123)
INSERT INTO temp VALUES(N'100', N'222', N'BBB', 456)
INSERT INTO temp VALUES(N'100', N'333', N'CCC', 789)
INSERT INTO temp VALUES(N'100', N'444', N'DDD', 012)
INSERT INTO temp VALUES(N'100', N'555', N'EEE', 345)
SELECT * FROM ( SELECT
ID,
CAST(F1 AS NVARCHAR(MAX)) AS F1,--used in order to normalize the data
CAST(F2 AS NVARCHAR(MAX)) AS F2,--used in order to normalize the data
CAST(F3 AS NVARCHAR(MAX)) AS F3--used in order to normalize the data
FROM
TEMP ) AS T UNPIVOT(FieldValue for FieldName in ( F1, F2, F3 )) AS UNPVT
我确实注意到当我正在使用的表UNPIVOT
具有DECIMAL()
字段类型时会发生此错误。
一如既往,任何帮助表示赞赏。
更新:似乎在远程服务器上创建视图将允许CAST
正确发生。但为什么?我也尝试过使用cte
,但没有奏效。我想避免创建视图。希望这不是唯一的解决方案。