У меня есть два запроса:
Сначала не работает:
select hotels.TargetCode as TargetCode from hotels
union all
select DuplicatedObjects.duplicatetargetCode as TargetCode
from DuplicatedObjects where DuplicatedObjects.objectType=4
потому что я получаю ошибку:
Cannot resolve collation conflict for column 1 in SELECT statement.
Вторые работы:
select hotels.Code from hotels where hotels.targetcode is not null
union all
select DuplicatedObjects.duplicatetargetCode as Code
from DuplicatedObjects where DuplicatedObjects.objectType=4
Структура:
Hotels.Code -PK nvarchar(40)
Hotels.TargetCode - nvarchar(100)
DuplicatedObjects.duplicatetargetCode PK nvarchar(100)
Используйте sp_help
в обеих таблицах. Сопоставление для hotels.TargetCode отличается от сопоставления для DuplicatedObjects.duplicateTargetCode
, поэтому БД не знает, что делать с результирующим UNION
.
Вы можете принудительно установить новое сопоставление для одного из них, чтобы оно соответствовало другому, или поместить результаты в заранее определенную временную таблицу / таблицу, для которой уже будет определено сопоставление.
РЕДАКТИРОВАТЬ: Вы можете переопределить существующее сопоставление, используя что-то вроде ...
DuplicatedObjects.duplicateTargetCode COLLATE SQL_Latin1_General_CP1_CI_AS
... в запросе. Это будет использовать duplicateTargetCode с сопоставлением SQL_Latin1_General_CP1_CI_AS
. Следует выбрать сопоставление, соответствующее параметрам hotels.TargetCode
.