2016-08-16 10 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

Предположительно, ваши КОММЕНТАРИИ 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 ..

ntext, text и images будут удалены в будущей версии SQL Server. Избегайте использования этих типов данных в новых разработках и планируйте изменять приложения, которые в настоящее время их используют. Вместо этого используйте nvarchar (max), varchar (max) и varbinary (max).

+0

Вы были близки, но не хватало **, как **, например, у Танца-Генри. – StealthRT

Смежные вопросы