2016-08-16 5 views
0

이봐 모든 I가 내가 작업을 얻으려고 노력하고있는 다음 쿼리 :SQL 서버 2014는 가입

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

그 일을했습니다. 감사합니다 댄스 - 헨리. – StealthRT

1

당신은 해결 ... NTEXT, 이미지, 텍스트 데이터 형식을 비교할 수 없습니다 NVARCHAR 또는 대 Varchar에 모든 데이터 유형을 캐스팅하려고 ..

예 :

cast(textdatatye as varchar(10)) 

나는 것 they will be removed in future version of SQLServer 이후로 바꾸는 것이 좋습니다.

이후 버전의 SQL Server에서는 ntext, text 및 image 데이터 형식이 제거됩니다. 새로운 개발 작업에서는 이러한 데이터 유형을 사용하지 말고 현재 사용중인 응용 프로그램을 수정하십시오. 대신 nvarchar (max), varchar (max) 및 varbinary (max)를 사용하십시오.

+0

당신은 가깝지만 Dance-Henry의 예처럼 **가 부족했습니다. – StealthRT