2011-11-15 51 views
6

我在我的一個表中使用了text數據類型,我也使用PIVOT進行查詢。 我無法使用MAX(AttributeValue)其中AttributeValuetext的類型。它返回以下錯誤Operand data type text is invalid for max operator.。我該如何在這裏使用它,因爲我強制要使用aggregate函數與PIVOTMAX(文本)返回操作數數據類型文本對於最大操作符無效。在sql server 2008中

編輯: 我跟着後http://msdn.microsoft.com/en-us/library/ms187993.aspx

我試圖將數據類型轉換爲nvarchar(max)

ALTER TABLE dbo.MyTable 
ALTER COLUMN AttributeValue NVARCHAR(MAX) 

此外我也必須使用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 

凡「的AttributeValue」是「文本」的數據類型。我收到以下錯誤,

操作數數據類型文本對於最大操作符無效。

嗯,我試圖將該字段強制轉換爲nvarchar(max)。它給出了另一種類型的錯誤(在第四行)。

Incorrect syntax near '(' 

我錯過了什麼嗎?

回答

9

您可以將您的文本列轉換爲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 
+0

看我的編輯:(。我得到一個錯誤。 – Rauf

2

如果我記得是正確的,SQL Server中的文本不會讓您對它運行很多命令。我遇到的唯一(一半)解決方案是將文本轉換爲不同的數據類型;不幸的是,這可能意味着編寫一些代碼,並且只處理段中實際存儲的文本數據。

此外,文本正在從SQL Server的未來版本中刪除: http://msdn.microsoft.com/en-us/library/ms187993.aspx

所以,僅僅改變列的數據類型爲nvarchar(最大),並希望查詢將正常運行。

0

您還可以使用內MAX()DATALENGTH()以避免潛在的鑄造非常大的字符串。

SELECT 
    6B93119B-263B-4FED-AA89-198D26A3A3C4] DOB 
,[F1A0D9D6-702E-4492-9EBC-63AD22E60E6A] CaseTitle 
FROM MyTable PIVOT 
( MAX(DATALENGTH(AttributeValue)) 
    FOR AttributeID IN 
    (
     [6B93119B-263B-4FED-AA89-198D26A3A3C4] 
     ,[F1A0D9D6-702E-4492-9EBC-63AD22E60E6A] 
    ) 
) ResultTable 
相關問題