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
ましたが、うまくいきませんでした。ビューの作成を避けたかったのです。うまくいけば、それが唯一の解決策ではありません。