我收到此错误消息:
列“fi_description”的类型与其他类型冲突 UNPIVOT列表中指定的列。
SELECT fi_contactid,
question,
answer
FROM (SELECT soi.fi_contactid,
soi.statuscode,
fi_description = soi.fi_description COLLATE database_default,
soi.fi_elevationissuecode,
soi.fi_identifiedby
FROM ficrm_mscrm.dbo.fi_soiissuebase AS soi WITH (nolock)) p
UNPIVOT (question
FOR answer IN (statuscode,
fi_description,
fi_elevationissuecode,
fi_identifiedby)) AS unpt
fi_contactid是 uniqueidentifier
fi_description是 nvarchar (255)
fi_elevationissuecode是 int
fi_identifieby是 uniqueidentifier
在unpivot声明中是否存在我的排序错误?
答案 0 :(得分:1)
UNPIVOT
将假设IN
列表中的第一列是FOR
字段的数据类型,并将尝试直接转换为该类型,这可能有效,也可能无效。
您需要更改IN
子句的顺序(如果直接转换将起作用)或将每个列转换为子查询中的相同类型。
以下是解决方案的任何示例:
SELECT fi_contactid,
question,
answer
FROM (SELECT soi.fi_contactid,
CONVERT(VARCHAR(255), soi.statuscode) statuscode,
fi_description = soi.fi_description COLLATE database_default ,
CONVERT(VARCHAR(255), soi.fi_elevationissuecode) fi_elevationissuecode,
CONVERT(VARCHAR(255), soi.fi_identifiedby) fi_identifiedby
FROM ficrm_mscrm.dbo.fi_soiissuebase AS soi WITH (nolock)) p
UNPIVOT (question
FOR answer IN (statuscode,
fi_description,
fi_elevationissuecode,
fi_identifiedby)) AS unpt