我在我的一个表中使用文本数据类型,我也使用PIVOT查询.
我无法使用MAX(AttributeValue),其中AttributeValue是文本的类型.它返回以下错误操作数数据类型文本对于max运算符无效..我怎么能在这里使用它,因为我强制使用PIVOT的聚合函数.
我无法使用MAX(AttributeValue),其中AttributeValue是文本的类型.它返回以下错误操作数数据类型文本对于max运算符无效..我怎么能在这里使用它,因为我强制使用PIVOT的聚合函数.
编辑:
我跟着http://msdn.microsoft.com/en-us/library/ms187993.aspx后
我试图将数据类型转换为nvarchar(max).
ALTER TABLE dbo.MyTable ALTER COLUMN AttributeValue NVARCHAR(MAX)
此外,我也必须使用全文搜索选项.我收到以下错误
无法更改或删除列’AttributeValue’,因为它已启用全文搜索.
SELECT [6B93119B-263B-4FED-AA89-198D26A3A3C4] DOB,[F1A0D9D6-702E-4492-9EBC-63AD22E60E6A] CaseTitle FROM MyTable PIVOT ( MAX(AttributeValue) FOR AttributeID IN ( [6B93119B-263B-4FED-AA89-198D26A3A3C4],[F1A0D9D6-702E-4492-9EBC-63AD22E60E6A] ) ) ResultTable
其中’AttributeValue’是’text’数据类型.我收到以下错误,
操作数数据类型文本对于max运算符无效.
好吧,我试着将字段转换为nvarchar(max).它给出了另一种类型的错误(在第四行).
Incorrect Syntax near '('
我错过了什么吗?
解决方法
您可以将文本列转换为varchar(max).
select max(cast(AttributeValue as varchar(max))) from YourTable
您可以在子查询中转换数据.
SELECT [6B93119B-263B-4FED-AA89-198D26A3A3C4] DOB,[F1A0D9D6-702E-4492-9EBC-63AD22E60E6A] CaseTitle FROM ( SELECT AttributeID,CAST(AttributeValue as VARCHAR(MAX)) as AttributeValue FROM MyTable ) AS T PIVOT ( MAX(AttributeValue) FOR AttributeID IN ( [6B93119B-263B-4FED-AA89-198D26A3A3C4],[F1A0D9D6-702E-4492-9EBC-63AD22E60E6A] ) ) ResultTable