MAX(文本)返回操作数数据类型文本对于max运算符无效.在sql server 2008中

Rau*_*auf 8 aggregate-functions sql-server-2008 sqldatatypes

text在我的一个表中使用数据类型,我也使用PIVOT查询.我无法使用MAX(AttributeValue)其中AttributeValue的类型text.它返回以下错误Operand data type text is invalid for max operator..我怎么能在这里使用它,因为我被强制使用一个aggregate函数PIVOT.

编辑:我关注了帖子http://msdn.microsoft.com/en-us/library/ms187993.aspx

我试图将数据类型转换为nvarchar(max).

ALTER TABLE dbo.MyTable
ALTER COLUMN AttributeValue NVARCHAR(MAX)
Run Code Online (Sandbox Code Playgroud)

我也必须使用Full Text Search选项.我收到以下错误 Cannot alter or drop column 'AttributeValue' because it is enabled for Full-Text Search.

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
Run Code Online (Sandbox Code Playgroud)

其中'AttributeValue'是'text'数据类型.我收到以下错误,

操作数数据类型文本对于max运算符无效.

好吧,我试着将字段转换为nvarchar(max).它给出了另一种类型的错误(在第四行).

Incorrect syntax near '('
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

Mik*_*son 10

您可以将文本列转换为varchar(max).

select max(cast(AttributeValue as varchar(max)))
from YourTable
Run Code Online (Sandbox Code Playgroud)

您可以在子查询中转换数据.

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
Run Code Online (Sandbox Code Playgroud)