2016-08-16 80 views
0

嘿所有我有,我想獲得工作的以下查詢:的SQL Server 2014 DISTINCT與INNER JOIN

SELECT DISTINCT 
    APL.Status 
    ,APL.DateModified 
    ,APL.PID 
    ,APL.PType 
    ,APL.PName 
    ,APL.PostDate 
    ,APL.TID 
    ,APL.HRate 
    ,APL.Amount 
    ,APL.PContact 
    ,APL.PMail 
    ,APL.PPhone 
    ,APL.PFax 
    ,APL.RDate 
    ,PS.Comments 
FROM 
    [billing].[dbo].[x_APL] AS APL 
INNER JOIN 
    [billing].[dbo].[tblPS] AS PS ON APL.ProjectID = PS.ProjectID 
WHERE 
    APL.PID = '5879' 

,我得到的錯誤是:

ntext數據類型不能被選爲DISTINCT,因爲它不具有可比性。

我該如何解決這個問題,仍然使用INNER JOIN

+2

你應該考慮改變你現在的數據類型爲nvarchar。你可以使用nvarchar(4000),因爲這是很多信息。如果數據不適合,那麼可能必須使用nvarchar(max)。我已經做了很多地方DDL修改沒有問題。但是,您應該首先在測試環境中執行此操作。 –

回答

1

假設您的COMMENTS是ntext,使用CAST函數將數據類型轉換爲NVARCHAR。

而不是

PS.Comments 

你可以寫

cast(PS.Comments as nvarchar(4000)) as [Comments] 
+0

這樣做的工作。感謝Dance-Henry。 – StealthRT

1

你不能比較的ntext,圖像,文本數據類型......作爲一種變通方法嘗試鑄造所有的數據類型爲nvarchar或varchar ..

例子:

cast(textdatatye as varchar(10)) 

我會建議將它們替換爲they will be removed in future version of SQLServer ..

將在未來版本的SQL Server中刪除ntext,文本和圖像數據類型。避免在新的開發工作中使用這些數據類型,並計劃修改當前正在使用它們的應用程序。改爲使用nvarchar(max),varchar(max)和varbinary(max)。

+0

你很親密,但缺乏像亨利舞蹈的例子那樣的**。 – StealthRT